我在一个页面上有几个文本框和一个用户控件。我想要的是当用户特别点击或文本框获得焦点时,它应该打开弹出窗口。用户控件包含填充加载事件的网格。现在,当用户点击按钮时,弹出窗口应该关闭,专利页面的文本框应该填充所选行的值。 这该怎么做? 这是我的.aspx页面的代码并使用控制页面。 父页面代码
<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>
</td>
</tr>
<tr>
<td>
Name</td>
<td>
<asp:TextBox ID="txtName" runat="server" ontextchanged="txtName_TextChanged"></asp:TextBox>
</td>
<td>
</td>
</tr>
<tr>
<td>
HOD</td>
<td>
<asp:TextBox ID="txtHOD" runat="server"></asp:TextBox>
</td>
<td>
</td>
</tr>
<tr>
<td>
Email</td>
<td>
<asp:TextBox ID="txtEmail" runat="server"></asp:TextBox>
</td>
<td>
</td>
</tr>
<tr>
<td>
</td>
<td>
<asp:Button ID="btnGet" runat="server" onclick="btnGet_Click"
Text="Get Values" />
</td>
<td>
</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%">
</td>
<td align="right">
</td>
<td width="25%">
</td>
</tr>
<tr>
<td>
</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>
</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;Password=SQL@admin");
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>
答案 0 :(得分:4)
将此onfocus
属性添加到文本框中。
onfocus="$find("<%= YourModalPopupExtenderID.ClientID %>").show();"