【问题标题】:Unable get Label.text in ASP.Net Repeater using FindControl无法使用 FindControl 在 ASP.Net 中继器中获取 Label.text
【发布时间】:2011-04-30 20:05:48
【问题描述】:

我可以访问中继器内文本框中的文本,但无法从中继器内的标签中提取文本值。 中继器是从数据表中填充的,其中行(x)由 sqlreader(x)填充,我不知道这是否有区别。 我不能为此使用javascript。我需要从代码隐藏中访问标签值。

<asp:label id="weiLabel" runat="server">
  <%#DataBinder.Eval(Container, "DataItem.weiLabel")%>
</asp:label>

是标记

我可以使用以下方法访问同一行上的文本框:

featTable.Controls(1).Controls(1).FindControl("costText") 

并检索 textbox.text,但对标签使用相同的语句会给我 {text=""}。

我已经验证findcontrol返回的控件的clientID是正确的(featTable__ctl1_weiLabel)

感谢您的帮助

【问题讨论】:

  • 你可以像这样在任意行上找到一个控件的实例(c#)Label weiLabel = (Label)featTable.Items[someIndex].FindControl("weiLabel");

标签: asp.net text label repeater findcontrol


【解决方案1】:

您可以尝试像这样声明您的标签吗:

<asp:label id="weiLabel" runat="server" Text='<%#DataBinder.Eval(Container, "DataItem.weiLabel")%>' / >

【讨论】:

    【解决方案2】:

    您也可以尝试使用数据绑定方法从后面的代码中将值放入标签中。我发现它更容易调试和清理然后将其放入 html

     Private Sub repPoliList_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles repPoliList.ItemDataBound
    
        If (e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem) Then
    
            Dim dr As DataRowView = CType(e.Row.DataItem, DataRowView)
    
            Dim weiLabel As System.Web.UI.WebControls.Label= CType(e.Item.FindControl("weiLabel"), System.Web.UI.WebControls.Label)
            weiLabel.text= dr("ColumnFromDatabase").toString
    
    
        End If
    
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-24
      • 2011-03-10
      • 1970-01-01
      • 2023-03-23
      • 2016-10-05
      • 1970-01-01
      • 1970-01-01
      • 2011-09-25
      相关资源
      最近更新 更多