dsclgrid.js   v1.02 Released.

super grid table for jQuery.

Download .zip Download .tar.gz View on GitHub

Powerd by www.dosancole.com
→ スマホでの列の行表示切替に対応した簡便なjqueryテーブルはこちら( dscltable.js 姉妹品)

Contents

»1.トップページ
»3.詳しい説明

2.簡易編集の説明

簡易編集機能とは

dsclgrid.jsは簡易編集の機能も有しており、1行ごとの新規、更新、削除を簡単に実現できます。 業務系Webアプリケーションでは、マスタデータの管理画面などの利用が考えられます。

実装例

動作イメージを以下に示します。行の左側のアイコンで新規、更新、削除の動作イメージを確認してください。 ※サーバは静的なデータを返却しているため、反映はされません。

上記を実装してみましょう。

####htmlファイル####

まずは以下のhtmlファイルを用意してください。 ※cssとjavascriptのURL、後で用意するdata.json, success.jsonのURLは、配置場所によって修正してください。

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <link rel="stylesheet" type="text/css" href="web/css/superTables.css" />
    <link rel="stylesheet" type="text/css" href="web/css/dsclgrid.css" />
    <link rel="stylesheet" type="text/css" href="web/css/jqueryui/jquery-ui-1.8.16.custom.css" />
    <script type="text/javascript" src="web/js/jquery-1.6.2.min.js"></script>
    <script type="text/javascript" src="web/js/jquery-ui-1.8.16.custom.min.js"></script>
    <script type="text/javascript" src="web/js/superTables.js" ></script>
    <script type="text/javascript" src="web/js/dsclgrid.js" ></script>
    <title>dsclgrid.js sample 000</title>
    <script type="text/javascript">

$(function(){
    $('#sample001').dsclgrid({
        method: "GET",
        titlebar: false,
        width: "730px",
        height: "150px",
        url: "data.json",
        urlRegist: "success.html",
        urlUpdate: "success.html",
        urlDelete: "success.html",
        calendarIconUrl: "web/css/dsclgridimg/bullet_arrow_down.png",
        fixedCols : 2,
        editable: true,
        model : [
            {display: 'ユーザ名',   name : 'name',    width: 100, align: 'left',   edittype: "text"  },
            {display: 'パスワード', name : 'password',  width: 80,  align: 'left',   edittype: "password"  },
            {display: '住所',      name : 'depart',  width: 150, align: 'left',   edittype: "text"    },
            {display: '年齢',      name : 'age',     width: 100,  align: 'left',  edittype: "select",  select: [{name:'20代',value:'20'},{name:'30代',value:'30'},{name:'40代',value:'40'}] },
            {display: '更新日',      name : 'update', width: 150, align: 'left',  edittype: "date"    }
        ]
    });
    $('#sample001').dsclgridLoad();
});

    </script>
</head>
<body style="font-size:15px;">
    <div id="sample001"></div>
</body>
</html>

単なる一覧表示との違いは、editable:trueとし、urlRegist, urlUpdate, urlDelete と、カレンダーを使う場合には、calendarIconUrl を指定することと、modelパラメータにedittypeを指定することです。これだけで簡易編集可能なテーブルになります。

####JSONファイル####

次にサーバ相当のJSONを返却する data.json を用意します(簡単のために固定のものです)。

{
    "offset" : 0,
    "page"   : 1,
    "rows"   : [
        { "cell" : ["sato",     "***","tokyo Japan",    "20", "04/01/2012"], "id" : 1, "versionNo" : 1 },
        { "cell" : ["suzuki",   "***","hokkaido Japan", "30", "04/05/2012"], "id" : 2, "versionNo" : 1 },
        { "cell" : ["takahashi","***","okinawa Japan",  "20", "04/12/2012"], "id" : 3, "versionNo" : 1 }
    ],
    "total"  : 3
}

簡易編集可能とするため、idとversionNoを属性に含めます。 edittype:selectのカラムは、valueからnameへ変換されて表示します。

####結果ファイル####

最後にサーバ相当の結果を返却する、success.json を用意します。 空の返却が成功を意味するため、ここでは空ファイルとします。 ※ローカルファイル環境での確認では、空ファイルをうまく取得できない可能性があります。その場合にはWebサーバに配置してご確認ください。

ここまでで、サンプルの動作が確認できます。

サーバ側の実装詳細

実際には一覧の実装に加えて、新規、更新、削除時の実装を行う必要があります。 dsclgrid.jsは、新規登録や更新、削除の操作が行われた場合、urlRegist, urlUpdate, urlDeleteに以下のようなアクセスを行います。 (GETの例です。method=”POST”の場合には、POSTで送信します。)

新規(urlRegist:”/hoge/ajaxRegist”の場合)

/hoge/ajaxRsgist?id=-1&name=xxx&password=xxx&depart=xxx&age=xxx&update=xxx

更新(urlUpdate:”/hoge/ajaxUpdate”の場合)

/hoge/ajaxUpdate?id=xxx&version=xxx&name=xxx&password=xxx&depart=xxx&age=xxx&update=xxx

削除(urlDelete:”/hoge/ajaxDelete”の場合)

/hoge/ajaxDelete?id=xxx&version=xxx

サーバ側はパラメータを受け取り、適切なデータソースに対して処理を行い、結果を返却します。 結果は以下の2通りを返却します。

  • 空データ : 空を返却します。これは処理の成功を意味し、dsclgrid.jsは一覧を再ロードして見た目を確定します。

  • htmlコンテンツ : 何らかのhtmlコンテンツを返却します。これは処理の失敗を意味し、dsclgrid.jsはその内容をダイアログ表示します。

####楽観的排他制御とトランザクショントークン制御####

業務系Webアプリケーションでは、楽観的排他制御とトランザクショントークン制御を組み込む場合があります。 dsclgrid.jsは本制御を意図した仕組みを有します。

データに含まれたversionNoは、サーバへのアクセスにパラメータとして含むため、楽観的排他制御に利用することができます。

コンストラクタのtokenKeyとtokenパラメータを利用すると、サーバへのアクセスにパラメータとして含むため、 トランザクショントークン制御に利用することができます。

»1.トップページ
»3.詳しい説明