サンプルプロジェクト(登録画面作成-entry.xfdl)

登録画面は顧客管理システムのデータを追加、修正または削除する画面です。
(サンプルのデザインは、使うテーマによって異なることがあります。)

画面構成: データセット(Dataset) バインド-Edit,Combo,Calendar

コンポーネント別のデータセット(Dataset) バインドについて学びます。

画面(Form) 作成

“6.1 プロジェクトの生成”を参照してFormを作ります。

  1. ツールバーからNewアイコンを開いてFormを選択します。

  1. “Create New Form Wizard”に使ったオプションは次の通りです。

属性

説明

Name

entry

Location

Base

Width

800

Height

600

Formの titletext 属性値を “顧客詳細照会”に指定します。

照会、追加、削除、保存ボタン作り - ボタン : Button

図のように、Static,Div,Buttonを生成して画面(Form)に配置します。
類似するコンポーネントを一列に配置する場合には、コピー/貼り付け機能と矢印ボタンの移動を利用すれば、簡単に配置できます。

ボタン領域に配置されるコンポーネントは次の通りです。

ボタン領域

Component Type

ID

Text

説明

Static

sttList

顧客詳細照会


Div

divCommand



Static

sttSearch

顧客名


Edit

edtSearch



Button

btnSearch

照会


Button

btnInsert

追加


Button

btnDelete

削除


Button

btnSave

保存


データセットのコピー

コンポーネントはもちろん、データセットについても、Form間のコピーは可能です。
照会画面(list.xfdl)からデータセットをコピーして、登録画面(entry.xfdl)に貼り付けをします。

カラムのデザイン

グリッドを追加して、"画面構成(2) : グリッド(Grid) - カラムデザイン"を参照して、追加されたグリッドのカラムをデザインします。

グリッド(Grid)

属性

説明

id

grdCustomers


binddataset

dsCustomers


グリッドカラムの“職責” カラムは、"グリッドのコンボ作成"を参照して、“displaytype”をコンボ形式に指定します。

Grid Contents Editor(grdCustomers)

カラム順序

Head Cells : text

Body Cells : text

カラム大きさ

col0

ID

bind:id

60

col1

顧客名

bind:name

120

col2

電子メール

bind:email

150

col3

電話番号

bind:phone

120

col4

会社名

bind:company

150

col5

職責

bind:jobtitle

120

ディビジョン作成 - ディビジョン : Div

ディビジョン(Div)は、一つの画面に複数の部分画面を構成する時に使うコンポーネントです。 このように、複数のコンポーネントを内部に含めることができるコンポーネントを、コンテナと言います。
このようなコンテナには、Div以外に、GroupBox、Tabpage、PopupDiv などがあります。
また、ディビジョン(Div)の“url”プロパティを利用して、他の画面(Form)を貼り付けて表示することもできます。
ディビジョン(Div) の上で、バインド(Binding) 機能を確認します。
コンポーネントツールバーからを選択して、画面の上にディビジョン(Div)を作ります。

ディビジョン(Div)

属性

説明

id

divDetail


タイトルと入力領域作り

コンポーネントツールバーからを選択して、ディビジョン(Div) 上にスタティック(Static)を作り、を選択して追加されたスタティック(Static)の横にディビジョン(Div)を作ります。
スタティック(Static)を座標(0,0)に配置させて、border属性値を“1px solid #808080ff”に設定します。そして、すぐ隣にディビジョン(Div)を配置させます。

スタティック(Static)とディビジョン(Div)を同時に選択した後、コピーと貼り付けを繰り返します。

詳細領域のスタティック(Static)とディビジョン(Div)のID、Textプロパティを設定します。
詳細領域に配置されるコンポーネントは次の通りです。

詳細領域

ID

Text

Component Type

説明

sttName

顧客名

Static

案内フィールド

divName


Div

顧客名出力フィールド

sttEmail

電子メール

Static

案内フィールド

divEmail


Div

電子メール出力フィールド

sttBirthday

生年月日

Static

案内フィールド

divBirthday


Div

生年月日出力フィールド

sttPhone

電話番号

Static

案内フィールド

divPhone


Div

電話番号出力フィールド

sttHomeAddr

住所

Static

案内フィールド

divHomeAddr


Div

住所出力フィールド

sttCompany

職場名

Static

案内フィールド

divCompany


Div

会社名出力フィールド

sttJobTitle

職級

Static

案内フィールド

divJobTitle


Div

職責出力フィールド

sttBusiPhone

職場電話番号

Static

案内フィールド

divBusiPhone


Div

勤務先電話番号出力フィールド

sttBusiAddr

職場住所

Static

案内フィールド

divBusiAddr


Div

勤務先住所出力フィールド

エディット作成 - エディット : Edit

[図]のように、エディット(Edit)を追加します。

エディット(Edit) プロパティを変更します。

エディット(Edit)

id

スクリプトでのコンポーネント id

配置したスタティック(Static)

edtName

divDetail.divName.edtName

顧客名

edtEmail

divDetail.divEmail.edtEmail

電子メール

edtPhone

divDetail.divPhone.edtPhone

電話番号

edtHomeAddr

divDetail.divHomeAddr.edtHomeAddr

住所

edtCompany

divDetail.divCompany.edtCompany

会社名

edtBusiPhone

divDetail.divBusiPhone.edtBusiPhone

勤務先電話番号

edtBusiAddr

divDetail.divBusiAddr.edtBusiAddr

勤務先住所

カレンダー作成 – カレンダー : Calendar

図のように、カレンダー(Calendar)を追加します。

こよみ(Calendar)

属性

説明

id

calBirthday


dateformat

yyyy-MM-dd


コンボ作成 - コンボ : Combo

複数の例示値が表示される選択リストの形式には、コンボ(Combo)を使います。 コンポーネントツールバーからを選択して、画面にコンボ(Combo)を作ります。
コンボ(Combo)属性を次のように変更します。

コンボ(Combo)

属性

説明

id

cmbJobTitle


innerdataset

dsJobTitle

下の説明で自動設定

codecolumn

code

下の説明で自動設定

datacolumn

value

下の説明で自動設定

データセットとコンボの innerdatasetをバインドさせるために、バインドするデータセットをドラッグして、コンボ上にドロップします。

コンポーネント別のデータセットバインド

ディビジョン(Div) 上のコンポーネントは、idの前にディビジョン(Div)の名前が付いて識別されます。
データセット(Dataset)をドラッグしてバインドするコンポーネントに入れると、“Bind Item”ウィンドウが開きます。

バインドされるコンポーネントの Propertyとデータセットをバインドドするカラム IDを指定します。

“Bind Item”ウィンドウは、“Project Explorer”ウィンドウから作業する画面名を探してマウスを右クリックすると開くポップアップメニューからも確認可能です。

スクリプト作成 - 追加/修正/保存の作成

データを照会した後に必要なデータを追加したり、変更、削除する機能を作ります。

照会、追加、保存ボタンのスクリプト作成

照会ボタンをクリックすると、データセット(Dataset)に新しいデータを生成するようにスクリプトを作成します。先に照会ボタンをクリックして、“Properties”ウィンドウイベント(Event) 項目の中で“onclick”を選択します。関連付けする関数を登録します。

実装が必要なスクリプトの内容は、次の通りです。
<照会ボタン>の “onclick”に登録される“divCommand_btnSearch_onclick” 関数内容
function divCommand_btnSearch_onclick(obj:Button, e:ClickEventInfo)
{
	var id = "search";
	var url = "http://127.0.0.1:8080/xplatform9-ajax/search.jsp?keyword="
		+divCommand.edtSearch.text;
	var reqDs = "";
	var respDs = "dsCustomers=customers";
	var args = "";
	var callback = "received";
	transaction(id, url, reqDs, respDs, args, callback);
}

function received(id, code, message)
{
	if (code == 0) {
		alert(dsCustomers.rowcount + "件のデータが照会されました。");
	}else{
		alert("Error["+code+"]:"+message);
	}
}

<追加ボタン>の “onclick”に登録される“divCommand_btnInsert_onclick” 関数内容

function divCommand_btnInsert_onclick(obj:Button, e:ClickEventInfo)
{
	var row = dsCustomers.addRow();
	divDetail.divCommand.edtSearch.setFocus();
}

<削除ボタン>の “onclick”に登録される“divCommand_btnDelete_onclick” 関数内容

function divCommand_btnDelete_onclick(obj:Button, e:ClickEventInfo)
{
	var row = dsCustomers.rowposition;

	if (row >= 0) {
		var id = dsCustomers.getColumn(row, "id");

		if (id == undefined) {
			id = "";
		}

		if (confirm("顧客 ID " + id + "のデータを削除しますか ?")) {
			dsCustomers.deleteRow(row);
		}
	}
}

<保存ボタン>の “onclick”に登録される“divCommand_btnSave_onclick” 関数内容

function divCommand_btnSave_onclick(obj:Button, e:ClickEventInfo)
{
	var id = "save";
	var url = "http://localhost:8080/xplatform9-ajax/save.jsp";
	var reqDs = "customers=dsCustomers:A";
	var respDs = "";
	var args = "";
	var callback = "received";
	transaction(id, url, reqDs, respDs, args, callback);
}

function received(id, code, message)
{
	if (id == "search") {
		if (code == 0) {
			alert(dsCustomers.rowcount + "件のデータが照会されました.");
		} else{
			alert("Error["+code+"]:"+message);
		}
	} else if (id == "save") {
		if (code == 0) {
			alert("正常にデータが保存されました.");
		} else{
			alert("Error["+code+"]:"+message);
		}
	}
}

コンパイル及び実行

HTML5メニューの中で、Compile File及びQuickViewメニューをクリックしてテストします。

データを照会すると、グリッド(Grid)に表示されるデータが詳細に表示されて、グリッドを利用してRowを移動すれば、詳細内訳のデータも現在RowPositionにあたるデータに表示されます。

追加ボタンをクリックして、新しいデータを追加します。グリッドに Rowが追加され、詳細にデータを入力することができます。

削除しようとするデータをグリッド(Grid)から選択すれば、詳細内訳にデータが表示されます。“Delete”ボタンをクリックしてデータを画面から消します。

追加で追加されたデータと削除処理されたデータは、保存ボタンをクリックしてサービスを呼び出すと、作業内容がサーバーに反映されます。
しかし、現在save.jspが作成されていないので、transactionエラーが発生されます。
保存ボタンをクリックしてサービスを呼び出すと、次のようなエラーメッセージを確認します。