選択したアイテムテンプレート内のAsp.netリストビューでコントロールを見つける
質問
機能を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
リストビューには、「SelectedRow」はありません。コンセプトですが、SelectedItem。ただし、選択したアイテムに対してfindcontrolを実行することはできません。次のことをしようとすると(null参照例外が発生します):
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)
所属していません StackOverflow