2011-08-12 16 views
2

1ページに1つのユーザーコントロールが1つしかありません。私が欲しいのは、ユーザーが特にクリックしたときや、テキストボックスにフォーカスがあったときにポップアップが開くはずです。ユーザーコントロールには、ロードイベントで塗りつぶされたグリッドが含まれています。ユーザーがボタンをクリックすると、ポップアップが閉じられ、特許ページが選択された行の値で埋めるテキストボックスが表示されます。 これを行う方法は? 私の.aspxページと使用コントロールページのコードは次のとおりです。親ページのため コードテキストボックスがクリックされたときにModalPopUpExtenderでユーザーコントロールを開く

<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> 

親ページ.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); 
} 

コードユーザ制御た.ascxページ用

<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> 

コード、ユーザーコントロール.ascx.csページ

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> 

答えて

4

このonfocus属性をテキストボックスに追加します。

onfocus="$find("<%= YourModalPopupExtenderID.ClientID %>").show();" 
関連する問題