コンピュータの一覧を取得・表示して、選択したコンピュータの詳細を表示する画面をサンプルアプリに追加しました。
左が Windows アプリで右が Web アプリです。(クリックすると新しいウィンドウで拡大図が表示されます。)
データバインドについてはユーザリスト画面と同じで、Windows アプリは BindingSource を 1つ、Web アプリは ObjectDataSource(ビジネスオブジェクトは Computer クラス)を 3つ使ってます。
※Computer クラスの詳細はこちら(VB版 C#版)
Windows アプリはデザイナで次の設定をしてます。
・BindingSource の DataSource に プロジェクトデータソースとして Computer クラスを指定
・一覧 ListBox の DataSource は上記 BindingSource を選択し、DisplayMember は Name(プロパティ)を選択
・詳細の各表示用コントロールの DataBindings のプロパティ(Text)に 上記データソースの対応するプロパティを指定
※OS ラベルなら、(Computer クラスの)OperatingSystem プロパティを選択
また、コードでは次の処理をしてます。
1. グループの一覧を取得し(DirectoryAccess.GetGroups メソッド)、内部に保持
2. コンピュータの一覧を取得し(DirectoryAccess.GetComputers メソッド)、BindingSource のデータソースに設定
3. 取得したコンピュータの数を表示
4. 選択されたコンピュータの所属するグループを取得し(Computer.GetBelongGroups メソッド)、ListBox のデータソースに設定
別のコンピュータを選択した時は(一覧 ListBox の SelectedIndexChanged イベント)、4 の処理をしてます。
Web アプリはデザイナで次の設定をしてます。
・一覧 ListBox 用の ObjectDataSource に SELECT 操作として GetComputers メソッドを選択
・一覧 ListBox の AutoPostBack を有効にする
・一覧 ListBox のデータソースに上記 ObjectDataSource を選択し、テキスト・値ともフィールドは Name を選択
・詳細 FormView 用の ObjectDataSource に SELECT 操作として FindByName メソッドを選択
・パラメーター ソースは「Control」を選択し、ControlID は一覧 ListBox の ID を選択
・FormView のデータソースに上記 ObjectDataSource を選択
・詳細の各表示用コントロールの DataBindings のプロパティ(Text)に 上記データソースの対応するプロパティを指定
・所属するグループ ListBox 用の ObjectDataSource に SELECT 操作として GetBelongGroups メソッドを選択
・パラメーター ソースは「Control」を選択し、ControlID は一覧 ListBox の ID を選択
・所属するグループ ListBox のデータソースに上記 ObjectDataSource を選択
・FormView を囲う UpdatePanel の AsyncPostBackTrigger に 一覧 ListBox の SelectedIndexChanged を指定
コードでは次の処理をしてます。
1. 一覧 ListBox 用 ObjectDataSource の SELECT 操作完了時(Selected イベント)に、取得したコンピュータの数を表示
2. FormView 用と所属するグループ ListBox 用の ObjectDataSource の SELECT 操作前(Selecting イベント)に、コンピュータが未選択ならイベントをキャンセル
取得したコンピュータの数は、イベントデータ(ObjectDataSourceStatusEventArgs)の ReturnValue プロパティを ICollection にキャストしてその Count プロパティで取得してます。
Web フォームの場合は Windows フォームと違って、選択したコンピュータのオブジェクト(Computer クラスのインスタンス)は再度取得する必要があります。
今はコンピュータを表示するだけなのでフォーム側に書くコードは Windows アプリで 10数行、Web アプリは数行です。