Xai*_*oft 23 c# asp.net repeater
我在下面有以下转发器,我试图在后面的代码中找到lblA并且它失败了.标记下方是我的尝试:
<asp:Repeater ID="rptDetails" runat="server">
<HeaderTemplate>
<table>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><strong>A:</strong></td>
<td><asp:Label ID="lblA" runat="server"></asp:Label>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
Run Code Online (Sandbox Code Playgroud)
首先我试过,
Label lblA = (Label)rptDetails.FindControl("lblA");
Run Code Online (Sandbox Code Playgroud)
但是lblA是空的
然后我试过,
Label lblA = (Label)rptDetails.Items[0].FindControl("lblA");
Run Code Online (Sandbox Code Playgroud)
但是物品是0,即使m转发器包含1个itemtemplate
Spe*_*ort 28
您需要设置属性 OnItemDataBound="myFunction"
然后在您的代码中执行以下操作
void myFunction(object sender, RepeaterItemEventArgs e)
{
Label lblA = (Label)e.Item.FindControl("lblA");
}
Run Code Online (Sandbox Code Playgroud)
顺便提一下,您可以对嵌套转发器使用这种完全相同的方法.IE:
<asp:Repeater ID="outerRepeater" runat="server" OnItemDataBound="outerFunction">
<ItemTemplate>
<asp:Repeater ID="innerRepeater" runat="server" OnItemDataBound="innerFunction">
<ItemTemplate><asp:Label ID="myLabel" runat="server" /></ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)
然后在你的代码中:
void outerFunction(object sender, RepeaterItemEventArgs e)
{
Repeater innerRepeater = (Repeater)e.Item.FindControl("innerRepeater");
innerRepeater.DataSource = ... // Some data source
innerRepeater.DataBind();
}
void innerFunction(object sender, RepeaterItemEventArgs e)
{
Label myLabel = (Label)e.Item.FindControl("myLabel");
}
Run Code Online (Sandbox Code Playgroud)
我经常看到人们在内部转发器上手动绑定物品,但他们并没有意识到他们为自己制造物品有多困难.
我刚遇到同样的问题.
我们在循环项目时缺少项目类型.转发器中的第一个项目是标题,标题没有我们正在寻找的asp元素.
试试这个:
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{Label lblA = (Label)rptDetails.Items[0].FindControl("lblA");}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
59558 次 |
最近记录: |