使用Asp.net和VB.net。我在網頁上有一個DataList
。數據列表有一個標籤控件。我想用後續記錄中獲得的信息更新第一條記錄中的標籤控件的文本,因爲這些後續記錄是數據綁定的。換句話說,每次數據綁定的時候,我都想識別第一條記錄中的標籤,然後更新該標籤的文本。我試圖通過獲取標籤的ClientID
中的第一條記錄要做到這一點在ItemDataBound
:更新標籤控件在ItemDataBound期間DataList的第一條記錄
Dim strMealPrice As String = CType(e.Item.FindControl("lblMealPrice"), Label).ClientID
,然後認爲在一個隱藏的標籤ClientID
外的數據列表中。
If lblhidMealHeaderID.Text = "" then
lblhidMealHeaderID.Text = strMealPrice
End if
一切工作到這一點。
然後,每個數據列表ItemDataBound
被解僱時我使用的FindControl來嘗試更新的第一條記錄的標籤,但我不能確定如何使用一個變量時,格式化的FindControl標籤控件的ClientID
(lblhidMealHeaderID.text
)。但即使當我在第一個記錄中對標籤的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?
任何和所有的幫助,非常感謝。
Bharadwaj - 感謝您的回覆,但我不明白這將如何解決我的問題。該代碼在綁定該記錄(索引= 0)時在第一條記錄中設置標籤的文本。當它綁定其他記錄時(當索引= 1或2或3等時),我需要寫入該標籤 – user1375002
@ user1375002我更新了我的答案。希望它能幫助你。 – Bharadwaj
再次感謝。這看起來會起作用。我實際上最終通過在itemdatabound事件中使用單獨的數據連接到數據庫來解決問題。 – user1375002