Asp.net 및 VB.net 사용. 웹 페이지에 DataList
이 있습니다. 데이터리스트에는 레이블 컨트롤이 있습니다. 이후 레코드가 데이터 바인딩 될 때 후속 레코드에서 얻은 정보로 첫 번째 레코드의 레이블 컨트롤 텍스트를 업데이트하려고합니다. 즉, 데이터리스트가 바인딩 될 때마다 첫 번째 레코드에서 레이블을 식별 한 다음 해당 레이블의 텍스트를 업데이트하려고합니다. 나는 첫 번째 레코드의 레이블의 ClientID
을 받고하여 ItemDataBound
에서이 작업을 수행하려고 해요 : 다음레이블 컨트롤 업데이트 ItemDataBound 동안 DataList의 첫 번째 레코드에
Dim strMealPrice As String = CType(e.Item.FindControl("lblMealPrice"), Label).ClientID
과 숨겨진 레이블 ClientID
그 DataList에 외부십시오.
If lblhidMealHeaderID.Text = "" then
lblhidMealHeaderID.Text = strMealPrice
End if
모든 것은 지금까지 작동합니다.
그런 다음 DataList에ItemDataBound
해고 때마다 나는 첫 번째 레코드의 레이블을 업데이트하려고의 FindControl을 사용하지만 난에 대한 변수를 사용할 때의 FindControl를 포맷하는 방법을 확실 해요 레이블 컨트롤의
ClientID
(
lblhidMealHeaderID.text
). 그러나 첫 번째 레코드의 레이블
ClientID
을 하드 코딩해도 작동하도록 할 수는 없습니다. 내가 tempLabel에 기록 할 때
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.
얻을.
여기서 알 수 있듯이 나는 여기에서 파악하고 있습니다. 첫째, 이것이 최선의 방법입니까? ItemDataBound
어디에서 이것을 시도해야합니까? DataList
이 후속 레코드를 "바인딩"하는 동안 이전 레코드를 업데이트 할 수 없습니다. 둘째, ClientID는 이것을 수행하는 방법입니다 - 나는 ClientID
이 주로 자바 스크립트에 사용되는 것을 봅니까? 셋째, ClientID
을 사용하여 FindControl을 올바르게 포맷하려면 어떻게해야합니까?
모든 도움을 주시면 대단히 감사하겠습니다. ItemDataBound
사용이
If e.Item.ItemIndex = 0 Then
CType(e.Item.FindControl("lblMealPrice"), Label).Text = strMealPrice
End If
업데이트
에서
Bharadwaj - 답장을 보내 주셔서 감사합니다.하지만 어떻게 문제가 해결되는지는 알 수 없습니다. 이 코드는 레코드를 바인딩 할 때 첫 번째 레코드의 레이블 텍스트를 설정합니다 (index = 0). 다른 레코드를 바인딩 할 때 해당 레이블에 쓸 필요가 있습니다 (인덱스 = 1 또는 2 또는 3 등일 때) – user1375002
@ user1375002 내 대답을 업데이트했습니다. 희망이 당신을 도울 것입니다. – Bharadwaj
다시 한번 감사드립니다. 그게 효과가있는 것처럼 보입니다. 실제로 itemdatabound 이벤트 동안 데이터베이스에 별도의 데이터 연결을 사용하여 작업을 마무리했습니다. – user1375002