使用Asp.net和VB.net。我在网页上有一个DataList
。 datalist有一个标签控件。我想更新第一个记录中标签控件的文本,其中包含从后续记录中获取的信息,因为后续记录是数据绑定的。换句话说,每次绑定datalist时,我想在第一个记录中标识标签,然后更新该标签的文本。我试图通过在第一条记录中获取标签的ItemDataBound
来在ClientID
中执行此操作:
Dim strMealPrice As String = CType(e.Item.FindControl("lblMealPrice"), Label).ClientID
然后将ClientID
保存在数据列表之外的隐藏标签中。
If lblhidMealHeaderID.Text = "" then
lblhidMealHeaderID.Text = strMealPrice
End if
到目前为止,一切都有效。
然后每次触发datalist ItemDataBound
时我都会使用findcontrol来尝试更新第一条记录中的标签,但我不确定如何在为标签控件{{1}使用变量时格式化findcontrol }(ClientID
)。但即使我在第一个记录中硬编码标签的lblhidMealHeaderID.text
,我也无法使其工作。
ClientID
或
Dim tempLabel As Label = DataList1.FindControl("DataList1_ctl00_lblMealPrice")
当我尝试写入tempLabel时,我得到Dim tempLabel As Label = CType(e.Item.FindControl("DataList1_ctl00_lblMealPrice"), Label)
。
你可以看到我在这里抓住。首先,这是最好的方法吗?Object reference not set to an instance of an object.
我应该尝试这个吗?当ItemDataBound
“绑定”后续记录时,您可能无法更新以前的记录。其次,ClientID是这样做的方式 - 我看到DataList
主要用于javascript?第三,如何使用ClientID
正确格式化FindControl?
非常感谢任何和所有帮助。
答案 0 :(得分:1)
在ItemDataBound
中使用此
If e.Item.ItemIndex = 0 Then
CType(e.Item.FindControl("lblMealPrice"), Label).Text = strMealPrice
End If
<强>更新强>
通过循环浏览项目,您可以在绑定后的任何时间找到第一个标签。
For Each item as DataGridItem In dgGrid.Items
CType(item.FindControl("lblMealPrice"), Label).Text = strMealPrice
Next