在转发器中更改asp:标签文本

时间:2011-08-16 16:00:59

标签: asp.net vb.net repeater

我在转发器中有这个标签

<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 

遗憾的是这段代码对我不起作用,文本值没有变化,所以我会很乐意在这里提供一些帮助

感谢

3 个答案:

答案 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";
            }