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

リストビューには、「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

選択した項目テンプレート内でコントロールを見つける方法を知っている人はいますか?

4

1 に答える 1

3

選択したアイテムだけでなく、ListView 全体で FindControl を呼び出しています。これはうまくいくはずです:

Dim lblModuleTitle As Label = CType(listviewModules.Items(listviewModules.SelectedIndex).FindControl("lblModuleTitle"), Label)
于 2008-10-15T13:54:11.370 に答える