1

json データストア (json 形式に変換された mysql 結果セット) を持つ dojo グリッドがあります。現在、私のグリッドには、下の図に示すように 5 つの列が表示されます。 ここに画像の説明を入力

「アクション」という名前の列があります。この「アクション」列の下の行には、編集の場合は edit.php?id=1、削除の場合は delete.php?id=1 などのハイパーリンクを含むボタンまたは画像 (編集アイコン、削除アイコン) が含まれている必要があります。ここに私の道場グリッドコードがあります:

<span dojoType="dojo.data.ItemFileReadStore" data-dojo-id="studentsStore" url="http://localhost/newsmis/public/studentManagement/student/fetchdata/data/1"></span>
<table dojoType="dojox.grid.DataGrid" id="studentsGrid" data-dojo-id="studentsGrid" columnReordering="true" sortFields="['idstudents','first_name','middle_name','last_name']" store="studentsStore"  clientSort="true" selectionMode="single" rowHeight="25" noDataMessage="<span class='dojoxGridNoData'>No students found</span>">
    <thead>
        <tr>
            <th field="idstudents" width="20%">Student ID</th>
            <th field="first_name" width="20%">First Name</th>
            <th field="middle_name" width="20%">Middle Name</th>
            <th field="last_name" width="20%">Last Name</th>
            <th field="action" width="20%">Action</th>
        </tr>
    </thead>
</table>

私のjsonデータ形式は

 {"identifier":"idstudents","items":[{"idstudents":"11","first_name":"Pradip","middle_name":"Maan","last_name":"Chitrakar"}]}

どうすればできますか?いくつかのアイデアを提案してください

4

4 に答える 4

5

私が知っている 1 つの方法は、グリッド構造でその列の書式設定方法を定義することです。したがって、グリッドの構造を宣言的に定義する代わりに、以下のように JavaScript オブジェクトで定義します。

var structure = [
{
    name: "First Name",
    field: "first_name"
},
{
    name: "Action",
    field: "_item",
    formatter: function(item){
        var btn = new dijit.form.Button({
            label: "Edit"
        });
    return btn;
    }
}

]

この構造をグリッドに設定します

<table dojoType="dojox.grid.DataGrid" id="studentsGrid" data-dojo-id="studentsGrid" columnReordering="true" sortFields="['idstudents','first_name','middle_name','last_name']" store="studentsStore"  clientSort="true" selectionMode="single" rowHeight="25" noDataMessage="<span class='dojoxGridNoData'>No students found</span>" structure=structure >
于 2012-07-01T15:56:21.013 に答える
3

これが実際の例です。

Dojo グリッド内の画像

于 2012-10-08T06:50:43.813 に答える
2

dojox.grid.DataGrid のドキュメントとして:

Dojo 1.7 以降では、最新のブラウザーとオブジェクト・ストアを最大限に活用する次世代のグリッド・コンポーネントである dgrid または gridx を使用する必要があります。

コード例:

columns: [
            {
                field: "id",
                label: "ID"
            },
            {
                field: "name",
                label: "Name"
            },
            {
                field: "options",
                label: "Options",
                renderCell: function (obj) {
                    var cellContent = domConstruct.create("div",{});
                    var btn = new Button({
                        label: "Cell " + obj.id,
                        name: "idBtn"
                    })
                    btn.placeAt(cellContent);

                    on(btn, "click", function (evt) {
                        console.log(obj);
                    });

                    return cellContent;
                }
            }
        ]

これは、dgrid の列プロパティで関数 renderCell を使用して、dgrid でそれを行う方法のJSfiddle の例です。

renderCell(object, value, node, options) - 値をターゲット セルにレンダリングするために呼び出されるオプションの関数。object は行のグリッドのストアからのレコードを参照し、value は現在のセルの特定の値を参照します (列定義の get 関数によって変更された可能性があります)。node は、renderCell によって何も返されない場合にグリッドに配置されるテーブル セルを参照します。renderCell がノードを返す場合、返されたノードは代わりにグリッドに配置されます。(注: formatter が指定されている場合、renderCell は無視されます。)

于 2014-10-21T21:46:05.933 に答える