ルックアップテーブルを表示するサンプル

図 ルックアップテーブルを表示するサンプル
このサンプルは、Webページに表示されている社員を編集するとき、支社のルックアップテーブルを表示して選択することができます。DataGridから社員を選択して、編集ボタンをクリックすると、新規ウィンドウに社員が表示されます。社員の支社を変更するときは、支社の右側に表示されているルックアップボタン
をクリックします。
ルックアップボタンをクリックすると、新規ウィンドウが開いてリストボックスに支社の一覧が表示されます。リストボックスから支社を選択したら、[選択]ボタンをクリックして確定します。[閉じる]ボタンをクリックすると、支社を選択しないでウィンドウを閉じます。
◆プログラムPopupEmployee.aspxのポイント
¶ポイント1 手入力とリストボックスからの選択を許可するには
このサンプルでは、支社を変更するとき手入力とリストボックスの2種類を許可しています。通常、支社はマスター化するのが一般的です。この場合、TextBoxのReadOnlyプロパティにTrueを設定して手入力を禁止して、リストボックスからのみ選択できるように設計します。
<asp:TextBox id="txtBranch" runat="server"
ReadOnly="True"
Columns="20" />
¶ポイント2 リストボックスの代わりにドロップダウンリストを使用するには
このサンプルでは、支社の一覧をポップアップウィンドウに表示していますが、テキストボックスの右側にドロップダウンリストを表示して選択させる方法もあります。この場合、PanelコントロールでDropDownListを非可視状態にしておいて、ルックアップボタンをクリックしたときに可視状態に切り替えます。
<asp:ImageButton id="ibtnLookup" runat="server"
OnClick="ibtnLookup_Click"
ImageUrl="../img/lookup.gif"
ImageAlign="Middle" />
<asp:Panel id="pnlBranch" runat="server" Visible="False">
<asp:DropDownList id="dropBranch" runat="server"
AutoPostBack="True"
OnSelectedIndexChanged="dropBranch_SelectedIndexChanged" />
</asp:Panel>
◆プログラムPopupEmployee.aspxの解説(HTML編)
PopupEmployee.aspxでは、DataGridから選択した社員をTextBoxに表示します。行267-274では、LabelとTextBoxを定義して社員レコードの支社を表示しています。行275-281のImageButtonでは、ルックアップボタンを定義しています。このImageButtonには、OnClickイベントを登録しています。OnClickイベントでは、新規ウィンドウを開いて支社の一覧をリストボックスに表示します。
![]()
図 ImageButtonでルックアップボタンを表示した例
リスト PopupEmployee.aspxのソースコード(HTML編)
|
219: <html> ・・・ 376: </form> |
◆プログラムPopupEmployee.aspxの解説(コード編)
PopupEmployee.aspxは、ルックアップボタンをクリックしたとき新規ウィンドウを開いて支社の一覧を表示します。
Sub ibtnLookup_Click()イベントの処理
このイベントは、ルックアップボタンをクリックしたときに発生します。このイベントでは、新規ウィンドウを開くJavaScriptを生成して登録します。
行30-32では、JavaScriptのwindow.open()メソッドに指定するオプションを生成しています。行33では、window.open()に指定するurlを生成しています。行35では、OpenWindow()を呼び出して新規ウィンドウを開くJavaScriptを登録します。OpenWindowの引数には、url、target、featuresを指定します。
|
29: Sub ibtnLookup_Click(s As
Object, e As ImageClickEventArgs) |
Sub OpenWindow()の処理
このサブプロシージャでは、新規ウィンドウを開くJavaScriptを生成して登録します。OpenWindowは、ルックアップボタンをクリックしたときにOnClickイベントから呼ばれます。
行124-128のWith…End Withでは、StringBuilderのAppend()メソッドで以下のJavaScriptを生成しています。
<script
language='javascript'>
window.open('PopupBranch.aspx','_blank'," features ");
</script>
JavaScriptのwindow.open()メソッドは、新規ウィンドウを開きます。Open()メソッドの引数には、url、target、featuresを指定します。urlには、新規ウィンドウに表示するファイルPopupBranch.aspxを指定しています。
行129では、Page.RegisterClientScriptBlock()メソッドでJavaScriptを登録しています。ここで登録したJavaScriptは、Webページがロードされたときにブラウザから実行されます。
|
122: Sub OpenWindow(strUrl As String, strTarget As String, strFeatures As
String)
|
リスト PopupEmployee.aspxのソースコード(コード編)
|
1: <%@ Page language="vb"
SmartNavigation="False" %> |
◆プログラムPopupBranch.aspxの解説(HTML編)
PopupBranch.aspxでは、ListBoxに支社の一覧を表示して選択できるようにしています。行59-61では、ListBoxを定義しています。このListBoxには、SelectionModeプロパティにSingleを設定していますので1アイテムのみ選択することができます。Ro

図 ListBoxに支社を表示した例
行71-78では、「選択」と「閉じる」のButtonを定義しています。選択ボタンには、OnClickイベントを登録しています。このOnClickイベントでは、ListBoxから選択した支社を、親ウィンドウに転記するJavaScriptを生成して登録します。閉じるボタンには、クライアント側で動作するonClickイベントを登録しています。クライアント側で動作するonClickイベントでは、JavaScriptのwindow.close()メソッドでウィンドウを閉じます。
![]()
図 「選択」と「閉じる」のボタンを表示した例
リスト PopupBranch.aspxのソースコード(HTML編)
|
40: <html> |
◆プログラムPopupBranch.aspxの解説(コード編)
PopupBranch.aspxでは、ListBoxから選択した支社を親ウィンドウに転記します。
Sub Page_Load()イベントの処理
このイベントは、ページがロードされたときに実行されます。このイベントでは、ListBoxに支社をバインドして表示します。
行8-11のIf…End Ifでは、ページが最初にロードされたか調べています。ページが最初にロードされたときは、閉じるボタンにクライアント側で動作するonClickイベントを追加します。Buttonにクライアント側で動作するイベントを追加するには、AttributesコレクションのAdd()メソッドを使用します。Add()メソッドの引数には、イベント名とイベント処理を記述します。次に、BindListBox()を呼び出してListBoxに支社をバインドして表示します。
|
7: Sub Page_Load() |
Sub btnSelect_Click()イベントの処理
このイベントは、Webページから選択ボタンをクリックしたときに発生します。このイベントでは、ListBoxから選択した支社を、親ウィンドウに転記するJavaScriptを生成して登録します。
行15では、ListBoxから選択したアイテムを取得しています。ListBoxのSelectedItem.Textには、選択したアイテム(ListItem)のTextプロパティの値(支社名)が格納されています。
行17-22のWith…End Withでは、StringBuilderのAppend()メソッドで以下のJavaScriptを生成しています。
<script
language='javascript'>" & vbCrLf)
window.opener.frmPopupEmployee.txtBranch.value = '支社名';
window.close();
</script>
JavaScriptのwindow.opener.frmPopupEmployee.txtBranch.value=では、ListBoxから選択した支社名を親ウィンドウのTextBoxに転記します。window.close()メソッドは、ウィンドウを閉じます。
行23のPage.RegisterClientScriptBlock()メソッドでは、JavaScriptを登録します。ここで登録したJavaScriptは、Webページがロードされたときにブラウザから実行されます。
|
14: Sub btnSelect_Click(s As
Object, e As EventArgs)
|
Sub BindListBox()の処理
このサブプロシージャでは、ListBoxに支社名をバインドします。BindListBoxは、Page_Loadイベントから呼ばれます。
行27では、ListBoxのItemsコレクションからListItemCollectionを作成しています。行29-35のWith…End Withでは、ListItemCollectionのAdd()メソッドでListItemを追加しています。ListItemには、引数としてText/Valueプロパティを指定します。このサンプルでは、Valueプロパティを省略してTextプロパティのみ指定しています。
|
26: Sub BindListBox() |
リスト PopupBranch.aspxのソースコード(コード編)
|
1: <%@ Page language="vb"
SmartNavigation="False" %> |