[英]Accessing controls inside a repeater from another page
我在页面A中有一个转发器,它的ItemTemplate
包含一个具有PostBackUrl =页面B的LinkButton
。此外,它还包含一个隐藏字段,该字段从与转发器关联的datasource
中获取其值。 我想从B页访问此隐藏字段。在A页中,单击LinkButton
时,将sender
对象转换为LinkButton
然后在B页的加载事件中访问LinkButton
的实例,在该事件中,我使用NamingContainer
来知道哪个转发器单击该项目并检索其中的隐藏字段的值。 我在这里找到此方法:
我只是跨页面使用它。 但这是行不通的。 这是我的代码:
页面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
属性。 所以,我只是删除了的LinkButton的PostBackUrl属性和使用Server.Transfer
中OnClick
中的处理程序LinkButton
。
现在正在工作。
谢谢。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.