我在转发器中有这个标签
<asp:Label id="lblsub" runat=server text="sdds" />
我正在尝试更改此标签的文本,这是背后的代码
For Each Item As RepeaterItem In dg.Items
Dim l As New label
l = CType(Item.FindControl("lblsub"), System.Web.UI.WebControls.Label)
l.text="test"
Next
遗憾的是这段代码对我不起作用,文本值没有变化,所以我会很乐意在这里提供一些帮助
感谢
答案 0 :(得分:2)
什么时候运行该代码?
通过在Page_Load
中执行以下操作,确保您没有重新绑定转发器:
Sub Page_load
If not Page.IsPostBack Then
BindRepeater()
End If
End Sub
如果每次绑定转发器时都需要执行此代码,请将代码放入DataBound事件中:
Protected Sub dg_ItemDataBound(sender As Object, e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles dg.ItemDataBound
Select Case e.item.itemtype
Case ListItemType.Item, ListItemType.AlternatingItem
Dim l As Label = e.Item.FindControl("lblsub")
l.Text = "foo"
End Select
End Sub
我没有任何编程软件,因此不确定语法
答案 1 :(得分:1)
在这个问题中查看我的回答。相信它会解决你的问题。
Getting the databound value from repeater control in asp.net
修改
首先,请确保始终在标记中使用引号:
<asp:Label ID="lblsub" runat="server" Text="sdds" />
在你的代码中尝试这样的事情。如果我的VB有点生锈,请原谅我:
For Each Item As RepeaterItem in dg.Items
Dim l As Label = CType(Item.FindControl("lblsub"), Label)
l.Text = "test"
Next
语法只有几个小问题。我不知道它们是否会引起你的问题,但最好先把这些简单的东西拿出来。
答案 2 :(得分:0)
C#代码示例(它应该在method或page_load中)
foreach (RepeaterItem rt in MyRepeater.Items)
{
Label l = ((Label)rt.FindControl("lblPrice"));
l.Text = "200";
}