2012-02-08 25 views
1

我在ItemTemplate中的下一个代码:的FindControl在列表视图的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(); 

} 

我得到空 - 喜欢网页不找到 “喇嘛” 的标签。

我在哪里错了?

回答

1

要获得列表视图或中继器中的项目,您需要浏览此视图中的项目,然后找到控件(隐藏字段)。

页面将无法直接找到该控件。

希望有所帮助。

1

如果listview有一个itemdatabound事件,您可以使用它来查找控件并执行您需要的任何操作。下面的代码假设你的列表视图项目模板中有一个隐藏字段,其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); 
+0

这是另一个示例。 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listview.itemdatabound.aspx – 2012-02-08 13:05:31