マイナーでもいいよね??

殆どVB系、でも .NET じゃない VB は知らないよん

目次

Blog 利用状況

書庫

日記カテゴリ

コンピュータリスト画面

コンピュータの一覧を取得・表示して、選択したコンピュータの詳細を表示する画面をサンプルアプリに追加しました。

左が Windows アプリで右が Web アプリです。(クリックすると新しいウィンドウで拡大図が表示されます。)

PCListWin PCListWeb

 

データバインドについてはユーザリスト画面と同じで、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 アプリは数行です。

投稿日時 : 2013年11月13日 22:26

コメントを追加

No comments posted yet.
タイトル
名前
URL
コメント