値取得 - asp.net listview 動的



選択した項目テンプレート内のAsp.net Listviewでコントロールを検索します。 (1)

私は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という概念はなく、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)