如何在dojo EnhancedGrid中使用行索引而不是使用选择来删除行

nx7onnlm  于 2022-12-16  发布在  Dojo
关注(0)|答案(2)|浏览(140)

试图找到一个答案,根据行索引删除dojo EnhancedGrid的一行。
请查找增强网格。

var dataStore = new ObjectStore({objectStore: objectStoreMemory});
    // grid
    grid = new EnhancedGrid({
    selectable: true,
    store: dataStore,
    structure : [ {
        name : "Country",
        field : "Country",
        width : "150px",
        reorderable: false,
        editable : true
    }, {
        name : "Abbreviation",
        field : "Abbreviation",
        width : "120px",
        reorderable: false,
        editable : true
    }, {
        name : "Capital",
        field : "Capital",
        width : "100%",
        reorderable: false,
        editable : true
    }, {
        label: "", 
        field: "Delete",
        formatter: deleteButton
    }],
    rowSelector: '20px',
    plugins: {
        pagination: {
            pageSizes: ["10", "25", "50", "100"],
            description: true,
            sizeSwitch: true,
            pageStepper: true,
            gotoButton: true,
            maxPageStep: 5,
            position: "bottom"
        }
    }
    }, "grid");
    grid.startup();

删除按钮脚本如下所示:

function deleteButton(id) {
    var dBtn1 = "<div data-dojo-type='dijit/form/Button'>";
    var dBtn2 = "<img src='delete.png' onclick='javascript:removeItem()' alt='" + id + "'";
    dBtn = dBtn1 + dBtn2 + " width='18' height='18'></div>";
    return dBtn;
}

这是我的问题:每行末尾都有一个删除按钮,点击此按钮时,应删除同一行。
谁能告诉我如何根据行索引删除行?

tuwxkamq

tuwxkamq1#

如果要以编程方式添加(删除)数据,则只需从基础数据存储区中添加(删除)数据。由于DataGrid是“DataStoreAware”,因此对存储区所做的更改将自动反映在DataGrid中。
https://dojotoolkit.org/reference-guide/1.10/dojox/grid/example_Adding_and_deleting_data.html
dojox/grid有一个属性selection和方法getSelected()来获取选中的项目。在文档中的示例中,它是通过以下方式实现的:

var items = grid5.selection.getSelected();
        if(items.length){
            // Iterate through the list of selected items.
            // The current item is available in the variable
            // "selectedItem" within the following function:
            dojo.forEach(items, function(selectedItem){
                if(selectedItem !== null){
                    // Delete the item from the data store:
                    store3.deleteItem(selectedItem);
                } // end if
            }); // end forEach
        } // end if

希望能有所帮助。

4dbbbstv

4dbbbstv2#

解决方案是这样的:按钮的onClick将运行的方法序列是removeItem()和onRowClick事件
1〉设置单击按钮时的“deleteButtonFlag”。

function removeItem() {
        deleteButtonGFlag = true;
}

2〉删除项目

dojo.connect(grid, "onRowClick", function(e) {
    if (deleteButtonGFlag) {
        dataStore.fetch({
            query: {},
            onComplete: function(items) {
                var item = items[e.rowIndex];
                dataStore.deleteItem(item);
                dataStore.save();
                deleteButtonGFlag = false;
            }
        });
    }
});

相关问题