我是这个ASP.NET的新手。在我的页面中,我有一个带有FooterTemplate的Datalist。在页脚中,我有几个可见的面板,具体取决于QueryString。我遇到的问题是试图在Page_Load上找到这些面板以更改Visible Property。有没有办法在Page_Load中找到这个控件?例如,这是aspx页面的一部分:
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<asp:DataList ID="dlRecords" runat="server">
<FooterTemplate>
<asp:Panel ID="pnlArticleHeader" runat="server" Visible="false" >
</asp:Panel>
</FooterTemplate>
</asp:Datalist>
</asp:Content>
以下是代码隐藏中的内容:
protected void Page_Load(object sender, EventArgs e)
{
location = Request.QueryString["location"];
if (location == "HERE")
{
Panel pnlAH = *Need to find control here*;
pnlAH.Visible=true;
}
}
就像我说我是新人一样。我发现的一切似乎都没有用,所以我决定发一个具体的问题。提前致谢
答案 0 :(得分:0)
DataList具有事件OnItemCreated,覆盖允许选择行类型:
Panel _pnlArticleHeader;
void Item_Created(Object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Footer)
{
_pnlArticleHeader =(Panel)e.Item.FindControl("pnlArticleHeader");
}
}
在字段中调用事件后:_pnlArticleHeader您将获得所需的面板。这种方式是安全的,因为只创建一次。注意!对于公共DataList的行,同样的方法只返回最后一行。