9

当社は少し前に移転しdojox/DataGridましdgridた。現在、dgridはそのままでは dijit/dojox ウィジェットをサポートしていないようです。

dojox/DataGridウィジェットをformatter()返すことができる があります。とても簡単です。GitHubのAPI比較は言う

「dgrid はフォーマッタ関数をサポートしていますが、それらからウィジェットを返すことはサポートしていません。dgrid には renderCell もあり、DOM ノードを返すことが期待されています。これは表面上はウィジェットを表示するために使用できます (エディタ列プラグインはまさにこれを行います)。セルを編集する目的で、エディター列プラグインの使用を強くお勧めします。"

どのように正確に?

でエディタープラグインを使用してみました{editor: ' ', editorArgs:' '}。これはウィジェットをレンダリングしますが、制限が多すぎます。dijit/Buttonたとえば、セルの値であるラベルを使用して をレンダリングするにはどうすればよいですか? または、より複雑なもの、ストアの値であるフォーマッタ関数から生成された (あまり知られていない)dojox/image/MagnifierLiteを使用するにはどうすればよいですか?<img>src

4

1 に答える 1

14

このサンプルコードを使用できます

require(
    [
        "dgrid/List",
        "dgrid/OnDemandGrid",
        "dgrid/Selection",
        "dgrid/editor",
        "dgrid/Keyboard",
        "dgrid/tree",
        "dojo/_base/declare",
        "dojo/store/JsonRest",
        "dojo/store/Observable",
        "dojo/store/Cache",
        "dojo/store/Memory",
        "dijit/form/Button",
        "dojo/domReady!"
    ],

    function(
        List, 
        Grid, 
        Selection, 
        editor, 
        Keyboard, 
        tree, 
        declare, 
        JsonRest, 
        Observable, 
        Cache, 
        Memory, 
        Button
    ) {

        var columns = [
            {
                label:"Actions", 
                field:"id", 
                width: "200px", 
                renderCell: actionRenderCell
            }
        ];

        var actionRenderCell = function (object, data, cell) {

            var btnDelete = new Button({
                rowId : object.id,
                label: "Delete",
                onClick: function () {
                    myStore.remove(this.rowId);
                }
            }, cell.appendChild(document.createElement("div")));

            btnDelete._destroyOnRemove = true;

            return btnDelete;

        }

        grid = new (declare([Grid, Selection, Keyboard]))({
            store: myStore,
            getBeforePut: false,
            columns: columns
        }, "grid");

}
于 2012-11-22T08:02:45.123 に答える