2011-08-12 5 views
2

J'ai peu de zones de texte sur une page et un contrôle utilisateur. Ce que je veux, c'est que lorsque l'utilisateur clique en particulier ou que la zone de texte obtienne un focus, elle devrait s'ouvrir. Le contrôle utilisateur contient une grille qui est remplie dans l'événement load. Maintenant, lorsque l'utilisateur clique sur un bouton, la fenêtre contextuelle doit être fermée et les zones de texte de la page de brevet doivent être remplies avec les valeurs de la ligne sélectionnée. Comment faire? Voici le code pour ma page .aspx et la page de contrôle d'utilisation. code pour la page parentOuvrir le contrôle utilisateur dans ModalPopUpExtender lorsque l'on clique sur la zone de texte

<form id="form1" runat="server"> 
<asp:ScriptManager ID="ScriptManager1" runat="server"> 
</asp:ScriptManager> 
<div> 

    <table class="style1" width="100%"> 
     <tr> 
      <td width="20%"> 
       ID</td> 
      <td width="60%"> 
       <asp:TextBox ID="txtID" runat="server" ontextchanged="txtID_TextChanged"></asp:TextBox> 
      </td> 
      <td> 
       &nbsp;</td> 
     </tr> 
     <tr> 
      <td> 
       Name</td> 
      <td> 
       <asp:TextBox ID="txtName" runat="server" ontextchanged="txtName_TextChanged"></asp:TextBox> 
      </td> 
      <td> 
       &nbsp;</td> 
     </tr> 
     <tr> 
      <td> 
       HOD</td> 
      <td> 
       <asp:TextBox ID="txtHOD" runat="server"></asp:TextBox> 
      </td> 
      <td> 
       &nbsp;</td> 
     </tr> 
     <tr> 
      <td> 
       Email</td> 
      <td> 
       <asp:TextBox ID="txtEmail" runat="server"></asp:TextBox> 
      </td> 
      <td> 
       &nbsp;</td> 
     </tr> 
     <tr> 
      <td> 
       &nbsp;</td> 
      <td> 
       <asp:Button ID="btnGet" runat="server" onclick="btnGet_Click" 
        Text="Get Values" /> 
      </td> 
      <td> 
       &nbsp;</td> 
     </tr> 
    </table> 

</div> 
<UC:UserControl ID="UC1" runat="server" /> 
</form> 

page Parent .aspx.cs

protected void Page_Load(object sender, EventArgs e) 
{ 

    if(Session["dtTable"] != null) 
    { 
     Hashtable Table = (Hashtable)Session["dtTable"]; 
     txtID.Text = Table["ID"].ToString(); 
     txtHOD.Text = Table["HOD"].ToString(); 
     txtName.Text = Table["Name"].ToString(); 
     txtEmail.Text = Table["Email"].ToString(); 
    } 

} 
protected void txtID_TextChanged(object sender, EventArgs e) 
{ 
    UC1.Show(); 
    Page.Controls.Add(UC1); 
} 

Code pour la page .ascx de contrôle de l'utilisateur

<ContentTemplate> 
<asp:Panel ID="DisplayPanel" runat="server"> 
<table class="style1"> 
    <tr> 
     <td width="25%"> 
      &nbsp;</td> 
     <td align="right"> 
      &nbsp;</td> 
     <td width="25%"> 
      &nbsp;</td> 
    </tr> 
    <tr> 
     <td> 
      &nbsp;</td> 
     <td> 
      <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
       CellPadding="4" ForeColor="#333333" GridLines="None" 
       onrowcommand="GridView1_RowCommand"> 
       <AlternatingRowStyle BackColor="White" ForeColor="#284775" /> 
       <Columns> 
        <asp:BoundField DataField="DeptId" HeaderText="ID"/> 
        <asp:BoundField DataField="Name" HeaderText="Name"/> 
        <asp:BoundField DataField="HeadName" HeaderText="HOD"/> 
        <asp:BoundField DataField="HeadEmail" HeaderText="Email"/> 
        <asp:TemplateField> 
         <HeaderTemplate> 
          Select 
         </HeaderTemplate> 
         <ItemTemplate> 
          <asp:Button ID="btnAdd" runat="server" Text="ADD" /> 
         </ItemTemplate> 
        </asp:TemplateField> 
       </Columns> 
       <EditRowStyle BackColor="#999999" /> 
       <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> 
       <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> 
       <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" /> 
       <RowStyle BackColor="#F7F6F3" ForeColor="#333333" /> 
       <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /> 
       <SortedAscendingCellStyle BackColor="#E9E7E2" /> 
       <SortedAscendingHeaderStyle BackColor="#506C8C" /> 
       <SortedDescendingCellStyle BackColor="#FFFDF8" /> 
       <SortedDescendingHeaderStyle BackColor="#6F8DAE" /> 
      </asp:GridView> 
     </td> 
     <td> 
      &nbsp;</td> 
    </tr> 
</table> 

Code pour .ascx.cs de contrôle utilisateur Page

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     SqlConnection oConnection = new SqlConnection("Data Source=websrv3;Initial Catalog=20110801_AcrosBackup;Persist Security Info=True;User ID=sa;[email protected]"); 
     SqlCommand oCommand = new SqlCommand("select * from Department", oConnection); 
     SqlDataAdapter oAdapter = new SqlDataAdapter(oCommand); 
     DataTable dt = new DataTable(); 
     oAdapter.Fill(dt); 
     GridView1.DataSource = dt; 
     GridView1.DataBind(); 
    } 
} 
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    Hashtable dtTable = new Hashtable(); 
    int intRowInd = ((GridViewRow)(((Button)e.CommandSource).NamingContainer)).RowIndex; 
    dtTable.Add("ID",GridView1.Rows[intRowInd].Cells[0].Text); 
    dtTable.Add("Name", GridView1.Rows[intRowInd].Cells[1].Text); 
    dtTable.Add("HOD", GridView1.Rows[intRowInd].Cells[2].Text); 
    dtTable.Add("Email", GridView1.Rows[intRowInd].Cells[3].Text); 
    Session.Add("dtTable", dtTable); 

} 
public void Show() 
{ 
    this.ModalPopupExtender1.Show(); 
} 
</asp:Panel> 
<asp:Button ID="fake" runat="server" Style="display:none" /> 
<cc1:ModalPopupExtender ID="ModalPopupExtender1" runat="server" TargetControlID="fake" PopupControlID="DisplayPanel" BackgroundCssClass="overlay_style"> 
</cc1:ModalPopupExtender> 

</ContentTemplate> 

Répondre

4

Ajoutez cet attribut onfocus à votre zone de texte.

onfocus="$find("<%= YourModalPopupExtenderID.ClientID %>").show();" 
Questions connexes