繁体   English   中英

从另一个页面访问转发器内的控件

[英]Accessing controls inside a repeater from another page

我在页面A中有一个转发器,它的ItemTemplate包含一个具有PostBackUrl =页面B的LinkButton 。此外,它还包含一个隐藏字段,该字段从与转发器关联的datasource中获取其值。 我想从B页访问此隐藏字段。在A页中,单击LinkButton时,将sender对象转换为LinkButton然后在B页的加载事件中访问LinkButton的实例,在该事件中,我使用NamingContainer来知道哪个转发器单击该项目并检索其中的隐藏字段的值。 我在这里找到此方法:

http://aspadvice.com/blogs/joteke/archive/2007/02/25/Understanding-the-naming-container-hierarchy-of-ASP.NET-databound-controls.aspx

我只是跨页面使用它。 但这是行不通的。 这是我的代码:

页面A中的中继器代码:

 <asp:Repeater ID="postsRepeater" runat="server" DataSourceID="postsSource">

        <HeaderTemplate>

        </HeaderTemplate>

        <ItemTemplate>
            <asp:LinkButton runat="server" ID="commentsLink" OnClick="viewPost" CssClass="comments_profile_buttons" PostBackUrl="~/comments.aspx">
            <asp:HiddenField ID="psotId" runat="server" Value='<%#Eval("postId") %>' />
//other controls...
      </ItemTemplate>
  </Repeater >

页面A中的LinkButton Onclick方法:

protected void onclickbtn (object sender, EventArgs e)
        {

            LinkButton btn = (LinkButton)sender;
            btn.ID = "itemPointer";  
        }

这是页面B的Onload事件代码:

  protected void Page_Load(object sender, EventArgs e)
        {
            if (PreviousPage != null)
            {
                //retrieve the clicked post info: 
                //First access the clicked item in the repeater: 
                LinkButton senderbtn = (LinkButton) PreviousPage.FindControl("btn");
                RepeaterItem clickedItem = (RepeaterItem)senderbtn.NamingContainer; 


                HiddenField postIdHidden = (HiddenField)clickedItem.FindControl("psotId");



            }//end if 

这是我得到的错误:

System.NullReferenceException: Object reference not set to an instance of an object.

这是由以下行引起的: RepeaterItem clickedItem = (RepeaterItem)senderbtn.NamingContainer;

我认为检索到的ButtonLink为null,但我不知道为什么。

谁能告诉我我做错了什么?

谢谢。

我知道了,该错误是因为不使用Server.Transfer就无法使用PreviousPage属性。 所以,我只是删除了的LinkBut​​ton的PostBackUrl属性和使用Server.TransferOnClick中的处理程序LinkButton

现在正在工作。

谢谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM