< 前へ | 次へ >

演習 6: Dojo データ・グリッドの作成

この演習では引き続き、Web クライアント・インターフェースの作成方法について学習します。Dojo データ・グリッド・ウィジェットをページに追加し、グリッドに内容を取り込みます。
ムービー・オブジェクトを表示するグリッドを作成します。
  1. 「ソース」ビューで、以下のステップに従います。
    ステップ コード
    境界コンテナーの中央領域内に、 データ・グリッド用の以下のコードを追加します。
    Dojo datagrid 用の表のマークアップ
    モジュール ID のセット (DataGrid および ItemFileReadStore) を require 関数のモジュール依存配列に追加します。
    Dojo require ステートメント
    Grid.css および claroGrid.css のカスケード・スタイル・シート (CSS) リンクを Web ページのソース・コードに追加します。
    ヒント: Grid.css および claroGrid.css はデータ・グリッド表示に固有の スタイル・シートです。
    CSS マークアップ
  2. 次に、サービス URL または JSON ファイルからデータを取得するための Ajax 関数を作成します。Dojo xhrget 関数を使用してデータを取得します。 require コールバック関数内で dojo.ready 匿名関数を見つけ出します。dojo.ready 関数内で dojo.xhr と入力します。
  3. コンテンツ・アシストを開いてから、dojo.xhrget テンプレートを選択します。
    dojoxhrGet コンテンツ・アシスト
    コンテンツ・アシストにより、xhrGet 関数用の Dojo テンプレートが提供されます。テンプレートを選択すると、ツールチップ内のコードがソース・コードに追加され、次のようになります。
    dojo.xhrGet( {
    	url : "url",
    	handleAs : "text",
    	load : function(response, ioArgs) {
    		
    	},
    	error : function(response, ioArgs) {
    	}
    });
  4. URL 属性を、サービス URL またはデータが入った JSON ファイルの場所に変更します。
    オプション 説明
    JSON ファイルをダウンロードした場合 JSON ファイルの相対パス MovieList.json を入力します。
    RPC アダプター・サービスを使用する場合 テキスト /MyMovieProject/RPCAdapter/httprpc/MovieService/getMovieList をコピーし、URL プロパティーに貼り付けます。
  5. handleAs 属性を json に設定します。RPC アダプター・サービスが、データの入った JSON ファイルを返すためです。
  6. データが正常にロードされると、load プロパティーで宣言された関数が実行されます。load プロパティーに以下のコードを追加します。このコードは、データ・グリッドにデータを取り込みます。
    var newData = {
    					identifier: "title",
    					items: response.result
    			};
    			
    var dataStore = new dojo.data.ItemFileReadStore({data: newData, id:"dataStoreId"});
    			var grid = dijit.byId("gridId");
    			  grid.setStore(dataStore);
    このコードでは、以下のアクションが実行されます。
    • 応答でロードされたデータを、dojo.data.ItemFileReadStore に必要な形式に変更します。
    • 形式変更されたデータを使用して ItemFileReadStore データ・ストアを作成します。
    • 形式変更されたデータをデータ・グリッドに追加します。

    変数名の前に var キーワードを追加すると、変数の有効範囲は load 関数に対してローカルになります。

  7. error 属性で宣言される関数には、次のコードを追加します。 alert("An error occurred while invoking the service.");
  8. ページを保存します。
  9. Web ページをテストするには、「エンタープライズ・エクスプローラー」ビューで「ShowMovies.html」を右クリックし、「実行」 > 「サーバーで実行」を選択します。
  10. 以下のように、サーバーのリストでサーバーを選択します。
    オプション 説明
    JSON ファイルからデータに直接アクセスする 「Web プレビュー・サーバー」を選択します。
    RPC アダプター・サービスをデータ・ソースとして使用する 「WebSphere Application Server 8.0」を選択する。
    「終了」をクリックします。ブラウザーで ShowMovies.html ページが表示されます。
ShowMovies.html のソース・コードは、以下のサンプル・コードのようになります。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<link rel="stylesheet" type="text/css"
	href="dojo/dijit/themes/dijit.css">
<link rel="stylesheet" type="text/css"
	href="dojo/dijit/themes/claro/claro.css">
<title>ShowMovies</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script type="text/javascript"
	data-dojo-config="isDebug: false, async: true, parseOnLoad: true"
	src="dojo/dojo/dojo.js"></script>
<script type="text/javascript">
	require(
	// Set of module identifiers
	[ "dojo", "dojo/parser", "dijit/layout/BorderContainer",
			"dijit/layout/ContentPane", "dojox/grid/DataGrid",
			"dojo/data/ItemFileReadStore" ],
	// Callback function, invoked on dependencies evaluation results
	function(dojo) {
		dojo.ready(function() {
			dojo.xhrGet({
				url : "MovieList.json",
				handleAs : "json",
				load : function(response, ioArgs) {
					var newData = {
						identifier : "title",
						items : response.result
					};
					var dataStore = new dojo.data.ItemFileReadStore({
						data : newData,
						id : "dataStoreId"
					});
					var grid = dijit.byId("gridId");
					grid.setStore(dataStore);
				},
				error : function(response, ioArgs) {
				}
			});
		});
	});
</script>
<link rel="stylesheet" type="text/css" title="Style"
	href="dojo/dojox/grid/resources/Grid.css">
<link rel="stylesheet" type="text/css" title="Style"
	href="dojo/dojox/grid/resources/claroGrid.css">
</head>
<body class="claro">
	<div id="BorderContainer" style="height: 100%; width: 100%"
		data-dojo-type="dijit.layout.BorderContainer"
		data-dojo-props="design:'headline'">
		<div data-dojo-type="dijit.layout.ContentPane"
			data-dojo-props="region:'top'" style="text-align: center">My Movie Web Application!</div>
		<div data-dojo-type="dijit.layout.ContentPane"
			data-dojo-props="region:'center'">
			<table id="gridId" autowidth="true"
				data-dojo-type="dojox.grid.DataGrid"
				data-dojo-props="rowSelector:'20px'">
				<thead>
					<tr>
						<th field="title">Title</th>
						<th field="director">Director</th>
						<th field="actor">Actor</th>
						<th field="description">Description</th>
					</tr>
				</thead>
			</table>
		</div>
		<div data-dojo-type="dijit.layout.ContentPane"
			data-dojo-props="region:'right'"></div>
	</div>


</body>
</html>

演習のチェックポイント

Dojo クライアント用の web ページのコードを作成しました。
この演習では以下のことを学習しました。
  • データ・グリッドを Web ページに追加する方法。
  • Dojo コードを素早く作成するためにコンテンツ・アシストを使用する方法。
< 前へ | 次へ >

フィードバック