C# 获取列表视图中标签的文本

C# 获取列表视图中标签的文本,c#,asp.net,listview,C#,Asp.net,Listview,我有一个listview控件,它由数据库中的数据填充。我已使用标签显示该数据。现在我需要在其他地方使用该标签的值。我试图访问label控件的文本值,但它显示 对象引用未设置为对象的实例 但我在标签上确实有价值 <asp:ListView ID="msg_list" runat="server"> <ItemTemplate> <table> <tr class="myitem"> <td>

我有一个listview控件,它由数据库中的数据填充。我已使用标签显示该数据。现在我需要在其他地方使用该标签的值。我试图访问label控件的文本值,但它显示

对象引用未设置为对象的实例

但我在标签上确实有价值

<asp:ListView ID="msg_list" runat="server">
   <ItemTemplate>
    <table>
      <tr class="myitem">
        <td>
            <asp:Label ID="reg_id_reply" runat="server" Text="helo" Visible="false"  />
             <asp:Label role="menuitem" ID="msg_lbl" runat="server" text='<%#Eval("msg")%>' /><i style=" color:Gray; " >  from   
             <asp:Label ID="tme" runat="server" Text='<%#Eval("name")%>' />
             <i> on </i>
             <asp:Label ID="tmelbl" runat="server" Text='<%#Eval("tme")%>'/>
              <a id="msg-reply" class="btn button" data-toggle="modal" data-target="#msg-rply" style="cursor:pointer;" ><i class="glyphicon glyphicon-share-alt white"> </i></a>  </td>

              <hr style=" margin-top:1px; margin-bottom:1px; " />
      </tr>
     </table>
     <%--<hr style=" margin-top:1px; margin-bottom:1px; " />--%>
   </ItemTemplate>
  </asp:ListView>

根据以下说明:

仅当控件直接包含在指定容器中时,此方法才会找到该控件

标签所在的直接容器是
ItemTemplate
。因此,如果从listview开始,可能需要为标签构建递归搜索。您可以尝试以下建议的代码:

但是,还要注意,listview可能会更改项模板中组件的id值。如果您知道所需的项目索引,则可以使用中建议的方法:

var theLabel=this.ChatListView.Items[].FindControl(“reg\u id\u reply”)作为标签;

但是我在标签中有文本值,正如你在上面所看到的
text=“helo”
如果你知道标签的ID,LabelID。text会在labelYes中给出文本值,如果标签不在列表视图中,它会给出文本值,但我在列表视图中有该标签。这是foreach循环中的C代码吗?
Label mylbl = (Label)msg_list.FindControl("reg_id_reply");
string rid = mylbl.Text;
private Control FindControlRecursive(Control rootControl, string controlID)
{
    if (rootControl.ID == controlID) return rootControl;

    foreach (Control controlToSearch in rootControl.Controls)
    {
        Control controlToReturn = FindControlRecursive(controlToSearch, controlID);
        if (controlToReturn != null) return controlToReturn;
    }
    return null;
}
var theLabel = this.ChatListView.Items[<item_index>].FindControl("reg_id_reply") as Label;