我在itemtemplate中有下一个代码:
<asp:ListView ID="ListView1" runat="server">
<ItemTemplate>
<asp:HiddenField Value='<%# checkCatName(Eval("CatName")) %>' runat="server" />
........
<asp:Label runat="server" id="lblBla" Visible="false"> ... </asp:Label>
</ItemTemplate>
</asp:ListView>
背后的代码(C#):
public void checkCatName(object CatName)
{
Label bla = (Label)ListView1.FindControl("lblBla");
if (CatName.ToString() == "test1")
bla.Visible = true;
return CatName.ToString();
}
我得到null - 就像页面找不到&#34; bla&#34;标签
我哪里错了?
答案 0 :(得分:1)
要获取列表视图或转发器中的项目,您需要浏览此视图中的项目,然后找到控件(隐藏字段)。
页面无法直接找到该控件。
希望有所帮助。
答案 1 :(得分:1)
如果listview有一个itemdatabound事件,您可以使用它来查找控件并随意执行操作。以下代码假设您在listview项目模板中有一个隐藏字段,其id =“myhiddenfield”
//this goes inside your listview's itemdatabound event
HiddenField myhiddenfield = new HiddenField();
myhiddenfield = (HiddenField)e.Item.FindControl("myhiddenfield");
//get or set hidden field value here.
int myID = Convert.ToInt32(myhiddenfield.Value);