在listview itemtemplate中查找控件

时间:2012-02-08 12:57:14

标签: asp.net linq listview itemtemplate

我在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;标签

我哪里错了?

2 个答案:

答案 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);