![](/img/trans.png)
[英]How to get a reference to a label in a Repeater control in code-behind
[英]Appropriate location of label reference in code-behind
为什么对lblFlagged起作用:
<asp:Label ID="lblFlagged" runat="server" Text="x" />
<table>
<tr>
<td><asp:Label ID="lblCurrUser" runat="server" Text="MyText" Visible="false"></asp:Label></td>
</tr>
<tr>
<td><h1><asp:Label ID="lblMailbox" runat="server" style="color:cornflowerblue; font-size:x-large; font-weight:bold" Text="MyText"></asp:Label></h1></td>
</tr>
<tr>
<td>
<asp:UpdatePanel ID="SearchPanel" runat="server">
<ContentTemplate>
<asp:Repeater ID="MailRepeater" runat="server" onitemcommand="MailRepeater_ItemCommand" OnItemDataBound="MailRepeater_DataBinding">
<HeaderTemplate>
<table>
<tr style="height:7px">
<td style="width:95px">
<asp:Label ID="Label1" runat="server" Text=""></asp:Label>
</td>
<td style="width:110px">
<asp:Label ID="lblFromH" runat="server" Text="From"></asp:Label>
</td>
等等....
而且这不是:
<table>
<tr>
<td><asp:Label ID="lblCurrUser" runat="server" Text="MyText" Visible="false"></asp:Label></td>
</tr>
<tr>
<td><h1><asp:Label ID="lblMailbox" runat="server" style="color:cornflowerblue; font-size:x-large; font-weight:bold" Text="MyText"></asp:Label></h1></td>
</tr>
<tr>
<td>
<asp:UpdatePanel ID="SearchPanel" runat="server">
<ContentTemplate>
<asp:Repeater ID="MailRepeater" runat="server" onitemcommand="MailRepeater_ItemCommand" OnItemDataBound="MailRepeater_DataBinding">
<HeaderTemplate>
<table>
<tr style="height:7px">
<td style="width:95px">
<asp:Label ID="Label1" runat="server" Text=""></asp:Label>
</td>
<td style="width:110px">
<asp:Label ID="lblFlagged" runat="server" Text="From"></asp:Label>
</td>
等等....
(请注意,在第一个示例中,它在第一行中,而在第二个示例中,它在最后一行中)
请特别注意标签“ lblFlagged”。 在第一种情况下,如果愿意,可以在代码隐藏中设置该值。 在第二种情况下,它在后面的代码中用红色下划线表示“在当前上下文中不存在”。 在第二个示例中的designer.cs文件中也缺少此文件。
这与UpdatePanel有关吗? 有办法解决吗?
lblFlagged
已被移到转发器内部,这使它不再可被您的页面或控件直接访问,因为现在转发器的数据源中的每个项目都有一个标签。
使用RepeaterItem.FindControl()在类似重复项的循环或OnItemDataBound
事件的地方找到控件。
protected void MailRepeater_DataBinding(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
var lbl = (Label)e.Item.FindControl("lblFlagged");
lbl.Text = "Hello world";
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.