문제

ASP.NET GridView에서 기능을 ListView로 변환합니다. 그리드 뷰에서 선택한 항목이 변경되면 선택한 행의 레이블에서 값을 가져 와서 그리드 뷰 외부의 다른 레이블에 씁니다.

Protected Sub grdModules_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles grdModules.SelectedIndexChanged

    Dim lblModuleTitle As Label = grdModules.SelectedRow.FindControl("lblModuleTitle")
    lblCurrentModule.Text = lblModuleTitle.Text

End Sub

ListView에는 "SelectedRow"개념이 없지만 선택한 시티 템이 없습니다. 그러나 선택한 항목에 대해 찾기를 할 수 없습니다. 다음을 수행하려고 할 때 (널 참조 예외를 얻습니다) :

Protected Sub listviewModules_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles listviewModules.SelectedIndexChanged

    Dim lblModuleTitle As Label = CType(listviewModules.FindControl("lblModuleTitle"), Label)
    lblCurrentModule.Text = lblModuleTitle.Text

End Sub

선택한 항목 템플릿 내부에서 컨트롤을 찾는 방법을 아는 사람이 있습니까?

도움이 되었습니까?

해결책

선택한 항목이 아닌 전체 ListView에서 FindControl을 호출합니다. 이것은 작동해야합니다 :

Dim lblModuleTitle As Label = CType(listviewModules.Items(listviewModules.SelectedIndex).FindControl("lblModuleTitle"), Label)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top