一箇中繼器內我在頁面A中的中繼器,其其ItemTemplate
包含一項PostBackUrl =頁B.一個LinkButton
此外,它包含一個隱藏字段這需要從與中繼器相關聯的datasource
其值。我想從頁面B訪問這個隱藏的字段。在頁面A中,當單擊LinkButton
時,sender
對象被轉換爲LinkButton
,然後在頁面B的加載事件中訪問LinkButton
的實例,其中我使用NamingContainer
來知道哪個中繼器項目被點擊並檢索隱藏字段的值。我在這裏找到了這個方法:訪問控制從
我只是用它跨頁。但它不起作用。這裏是我的代碼:
直放站代碼頁答:
<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 >
的onclick方法來回回在網頁A的LinkButton
:
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
爲空,但我想不出爲什麼。
任何人都可以告訴我我做了什麼錯誤嗎?
謝謝。