dojo dgrid多个单元格编辑

时间:2012-10-23 09:28:23

标签: javascript dojo grid dgrid

是否可以同时编辑dgrid的多个单元格?

我知道我们可以通过双击/单击该单元格来一次编辑单个单元格并进行更新。在该单元格的onBlur上,已编辑的数据会针对该单元格进行更新。

但我的要求是:

  1. 点击每行的编辑链接/编辑按钮,这将显示该行所有可编辑单元格的编辑器,
  2. 更新/编辑单元格,
  3. 然后单击同一行的保存按钮(它将位于编辑按钮旁边)
  4. 点击保存链接/图标后,编辑过的单元格的值应保存到商店/服务器。
  5. 以下是Grid的一些列。

    // one of the editable columns others are also similar to this one.. 
              editor({
                        label:"Outcome", 
                        field:"outcome", 
                        sortable: false, 
                        editorArgs: {
                            options:[
                                      {value: "1", label: "Opt1"},
                                      {value: "2", label: "Opt2"},
                                      {value: "3", label: "Opt3"},
                                    ]
                        }, 
                        renderCell: function(row, value, td, options){
                            put(td, "div", outcomeOptionsMap[value] || '');
                        }
                    }, Select, "dblclick" ),
    
    
    // last column
                    {label:"Actions", field:"actions",sortable: false, 
                renderCell: function(row, value, td, options){
                newValue = "<a href=\"#\" title=\"Edit\" onclick='editEntireRow(testgrid,event);'><img src='../static/images/edit.gif'/></a>";
                newValue = "<a href=\"#\" title=\"Save\" onclick='saveRow(testgrid,event);'><img src='../static/images/edit.gif'/></a>";
                newValue += "  <a href=\"#\" title=\"Delete\" onclick='testgrid.store.remove("+row.id+");'><img src='../static/images/delete_icon.png'/></a>";
                td.innerHTML = newValue;
                }   
    

    BTW,我使用dojo.store.JsonRest作为商店 网格声明

    var MyGrid = declare([Grid, Selection, Keyboard]);
    window.testgrid = new MyGrid( 
        {
            store       : Observable(Cache(jsonRest, Memory())),
            selectionMode : "none",
            getBeforePut: false,
            columns: getColumns,
            allowSelectAll: true,
            minRowsPerPage: 5,
            maxRowsPerPage: 20,
        }, "gridContainer");
    

    目前我正在尝试这样的事情,但没有工作......

    function editEntireRow(grid,event){
    // cols 3,5,7,8 steps to the left of the Action column are editable
    grid.edit(grid.left(grid.cell(event),3));
    grid.edit(grid.left(grid.cell(event),5));
    grid.edit(grid.left(grid.cell(event),7));
    //grid.edit(grid.left(grid.cell(event),8));
    }
    

0 个答案:

没有答案