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