在ItemDataBound期间,在DataList的第一条记录中更新标签控件



使用Asp.net和VB.net。我在网页上有一个DataList。数据器有一个标签控件。我想用从后续记录中获得的信息更新第一个记录中的标签控件的文本,因为这些后续记录是绑定的。换句话说,每次绑定数据表时,我都希望识别第一个记录中的标签,然后更新该标签的文本。我试图通过在第一个记录中获得标签的ClientID来在ItemDataBound中做到这一点:

   Dim strMealPrice As String = CType(e.Item.FindControl("lblMealPrice"), Label).ClientID

,然后将ClientID保存在数据表之外的隐藏标签中。

 If lblhidMealHeaderID.Text = "" then
  lblhidMealHeaderID.Text = strMealPrice
 End if

到目前为止一切都很顺利。

然后每次数据表ItemDataBound被触发时,我使用findcontrol来尝试更新第一个记录中的标签,但我不确定如何在使用标签控件的ClientID (lblhidMealHeaderID.text)变量时格式化findcontrol。但是,即使我在第一个记录中硬编码标签的ClientID,我也不能让它工作。

 Dim tempLabel As Label = DataList1.FindControl("DataList1_ctl00_lblMealPrice")

Dim tempLabel As Label = CType(e.Item.FindControl("DataList1_ctl00_lblMealPrice"), Label)

我得到一个Object reference not set to an instance of an object.当我试图写到tempLabel。

你可以看到我在这里抓住了。首先,这是最好的方法来做到这一点-是ItemDataBound我应该尝试这个吗?也许你不能更新以前的记录,而DataList是"绑定"后续记录。第二,是ClientID的方式做到这一点-我看到ClientID主要用于javascript?第三,如何使用ClientID正确格式化FindControl ?

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

相关内容

  • 没有找到相关文章

最新更新