如何从子页面访问父页面的隐藏字段

时间:2010-08-16 06:13:34

标签: c# asp.net

在我的ASP.NET主页面中,我有一个隐藏字段和一个按钮。当用户点击按钮时,我显示弹出窗口(子页面)。弹出窗口加载时我需要访问隐藏字段。如何使用c#?

访问隐藏字段

2 个答案:

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