gpt4 book ai didi

c# - 在 ListView 控件中查找控件

转载 作者:太空狗 更新时间:2023-10-29 21:09:34 24 4
gpt4 key购买 nike

我想在“ListView”控件中找到 ID 为“Label”的“Label”控件。我试图用下面的代码来做到这一点:

((Label)this.ChatListView.FindControl("Label")).Text = "active";

但我收到此异常:对象引用未设置为对象的实例

这里有什么问题吗?

这是 aspx 代码:

<asp:ListView ID="ChatListView" runat="server" DataSourceID="EntityDataSourceUserPosts">
<ItemTemplate>
<div class="post">
<div class="postHeader">
<h2><asp:Label ID="Label1" runat="server"
Text= '<%# Eval("Title") + " by " + this.GetUserFromPost((Guid?)Eval("AuthorUserID")) %>' ></asp:Label></h2>
<asp:Label ID="Label" runat="server" Text="" Visible="True"></asp:Label>
<div class="dateTimePost">
<%# Eval("PostDate")%>
</div>
</div>
<div class="postContent">
<%# Eval("PostComment") %>
</div>
</div>
</ItemTemplate>

</asp:ListView>

最佳答案

Listview 是一个数据绑定(bind)控件;所以它里面的控件对于不同的行会有不同的ID。您必须首先检测行,然后捕获控件。获取此类控件的最佳方法是在 OnItemDataBound 等事件中。在那里,您可以执行此操作以获取控制权:

protected void myListView_ItemDataBound(object sender, ListViewItemEventArgs e)
{
if (e.Item.ItemType == ListViewItemType.DataItem)
{
var yourLabel = e.Item.FindControl("Label1") as Label;

// ...
}
}

如果您想在 Page_Load 中获取它,您将必须知道特定行并将控件检索为:

var theLabel = this.ChatListView.Items[<row_index>].FindControl("Label1") as Label;

关于c# - 在 ListView 控件中查找控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14903094/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com