-1

为什么我不能访问中继器内的这个文本框我在 rgroups itemdatabind 上使用了以下内容,无论我做什么,它都说无法引用该对象。请在 vb.net 中提供任何答案

<asp:Repeater ID="rGroups"  Runat="server">  
<HeaderTemplate>
  <ul id="prod_nav" class="clearfix">  
<asp:TextBox ID="txt"  Text="<%#DataBinder.Eval(Container.DataItem,"groupid")%>" runat="server"> 
  </asp:TextBox> 
</HeaderTemplate>   
<ItemTemplate>        
 <li class="top"><a href="05-Pink-02-Category-List.html" class="top_link">  
<span class="down">      <%#D ataBinder.Eval(Container.DataItem,"groupname")%></span></a>   
  <asp:Repeater ID="rSubgroups"  Runat="server">          
 <HeaderTemplate>                    
 <ul class="sub">                  
 <li class="clearfix">    
               <ul>       
 </HeaderTemplate>            <ItemTemplate> 

         <li><a href="default.aspx?subgrp=<%#DataBinder.Eval(Container.DataItem,"subgroupId")%>"><%#DataBinder.Eval(Container.DataItem,"subgroupname")%></a></li>  
      </ItemTemplate>        
<FooterTemplate>                    </ul>                  </li>                </ul>            </FooterTemplate>    


4

2 回答 2

1
protected void rGroups_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Header) // For Header
    {
        TextBox txt = e.Item.FindControl("txt") as TextBox;
    }
} 

VB.Net:

Protected Sub rGroups_ItemDataBound(sender As Object, e As RepeaterItemEventArgs) Handles rGroups.ItemDataBound
    If e.Item.ItemType = ListItemType.Header Then
        ' For Header '
        Dim txt As TextBox = TryCast(e.Item.FindControl("txt"), TextBox)
    End If
End Sub

Repeater.ItemDataBound

于 2011-03-29T10:16:56.107 回答
1

是的,您可以访问此文本框,但它不是一个漂亮的代码:

您必须在所需的 repeatitem.cotrols 上调用 FindControl 函数

于 2011-03-29T10:18:44.493 回答