在我的ASP.NET主页面中,我有一个隐藏字段和一个按钮。当用户点击按钮时,我显示弹出窗口(子页面)。弹出窗口加载时我需要访问隐藏字段。如何使用c#?
访问隐藏字段答案 0 :(得分:2)
好吧,您可以将隐藏字段的值传递给弹出窗口的查询字符串。像这样:
<asp:button id="ButtonInMainPage" runat="server" onclick="Popup();return false;" />
<asp:hidden id="hiddenValue" runat="server" />
<script type="text/javascript">
function Popup()
{
window.open('Child.aspx?hiddenValue='+document.getElementById('<%=hiddenValue.ClientID%>').value);
}
在子page_load中:
string hiddenValue = Request.QueryString["hiddenValue"];
我展示的是简单的代码,您必须根据您的项目添加必要的支票或其他。
答案 1 :(得分:0)
这是你的问题:
在主页面中,有一个gridview,其中包含一个复选框列,当选中一行复选框时,将相应的ID添加到隐藏字段。当用户单击弹出按钮时,将打开一个窗口,并将选定的ID传递给新窗口。问题是ID太长而无法传递到查询字符串中。
我的解决方案:
我认为您可以删除隐藏字段,并删除弹出按钮的所有客户端脚本。
<asp:button id="PopupButton" runat="server" Text="Click to pop up" />
添加按钮的服务器事件,例如:
void PopupButton_Onclick(object sender, EventArgs e)
{
string IDs = CollectTheSelectedIDsInTheGridView();
Session["IDs"] = IDs;
string js = @"<script type='text/javascript'>
window.open('Child.aspx');
</script>";
Page.ClientScript.RegisterStartupScript(this.GetType(),"showChild",js);
}
修改强> 您的数据列表必须如下所示:
<table>
<asp:Repeater ID="myData" runat="server">
<ItemTemplate>
<tr>
<td><asp:CheckBox ID="selectedFlag" runat="server" Checked=<%# Eval("Checked") %> /></td>
<td><asp:Label ID="dataText" runat="server" Text=<%# Eval("TextData") %>></asp:Label></td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>