gpt4 book ai didi

c# - 在 asp .net 中的某些条件下禁用中继器标签

转载 作者:太空宇宙 更新时间:2023-11-03 10:43:13 25 4
gpt4 key购买 nike

标记

<HeaderTemplate>
<table>
<tr>
<th>
<asp:Label ID="label12" runat="server" Text="Editor"></asp:Label>
</th>
</tr>
</HeaderTemplate>

代码隐藏

protected void ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Label label12 = (Label)e.Item.FindControl("label12");
Label activeLabel = (Label)e.Item.FindControl("lblEditor");
string s = activeLabel.Text;
if (s != "Sao Palo")
{
activeLabel.Visible = true;
label12.Visible = true;
}
else
{
activeLabel.Visible = false;
label12.Visible = false;
}
}
}

我在以下位置收到 NullReferenceException:

label12.visible=true;

最佳答案

这个标签在标题中,这就是为什么在转发器项目中找不到它的原因。所以改变 e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)e.Item.ItemType == ListItemType.Header

protected void ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Header)
{
Label label12 = (Label)e.Item.FindControl("label12");
// ...
}
}

但由于另一个标签不在 hader 中,而是在项目中,因此您需要采用不同的方法。您还可以通过 Repeater.Controls[0].Controls[0].FindControl("label12"); 获取 header 标签。

所以这应该可行:

protected void ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Label label12 = (Label)((Repeater)sender).Controls[0].Controls[0].FindControl("label12");;
Label activeLabel = (Label)e.Item.FindControl("lblEditor");
string s = activeLabel.Text;
if (s != "Sao Palo")
{
activeLabel.Visible = true;
label12.Visible = true;
}
else
{
activeLabel.Visible = false;
label12.Visible = false;
}
}
}

关于c# - 在 asp .net 中的某些条件下禁用中继器标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24489225/

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