2011-08-16 29 views
2

我有一个中继器更改一个asp:中继

<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 

不幸的是,代码此代码不适用于我,文本值不会改变,所以我会很乐意在这里提供一些帮助

谢谢

回答

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 

只有一些小问题的语法。我不知道他们是否会引起你的问题,但最好先把容易的东西先弄清楚。

+0

不知道我的朋友在你的答案是什么,我没有看到如何更改标签 – baaroz

+0

我得到空你的代码太文:System.NullReferenceException:对象未将引用设置为对象的实例。 – baaroz

+0

你在什么时候尝试改变文本?你可以将代码移动到ItemDataBound事件吗?这种方法绝对有效,所以一定还有其他的事情要做。 –

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 

我没有任何编程软件对我是如此不确定的语法

+0

我试过你的代码,但我得到null:System.NullReferenceException:对象引用未设置为对象的实例。 – baaroz

+0

我已经对代码进行了更改,以避免包含页眉/页脚,我认为这是造成空引用异常的原因 – Curt

0

C#代码示例(它应该是我n面法的Page_Load)

foreach (RepeaterItem rt in MyRepeater.Items) 
      { 
       Label l = ((Label)rt.FindControl("lblPrice")); 
       l.Text = "200"; 
      }