首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Kendo网格中删除行

如何从Kendo网格中删除行
EN

Stack Overflow用户
提问于 2015-07-02 19:38:34
回答 3查看 28.4K关注 0票数 4

我有一个非常简单的设置,一个名为#list的网格,它有一个填充了要显示的记录的数据源。

我在每一行上都有一个按钮,其中包含一个调用此函数的onClick事件:

代码语言:javascript
复制
    // Soft-Delete person
    var processURL = crudServiceBaseUrl + '?method=deletePerson';
    function deletePerson(id){
        if (confirm('#getResource("person.detail.confirmdel")#')) {
            $.ajax({
                type: 'POST',
                url: processURL,
                data: {
                    PERS_KY: id
                },
                success: function (data){
                    var thingToDelete = "tr:eq("+id+")";
                    var grid = $("#list").data("kendoGrid");
                    grid.removeRow(thingToDelete);
                },
                error: function (xhr, textStatus, errorThrown){
                    alert("Error while deleting person"+ "\n"+ xhr + "\n"+ textStatus + "\n" + errorThrown);
                }
            });
        }
    }

The server-side stuff works fine, the interaction with the database is good. However, the row does not disappear from the grid.

Anyone?

==============================================================================

In answer to the comments below, here is the revised function:

var processURL = crudServiceBaseUrl + '?method=deletePerson';
function deletePerson(id, row){
    if (confirm('#getResource("person.detail.confirmdel")#')) {
        $.ajax({
            type: 'POST',
            url: processURL,
            data: {
                PERS_KY: id
            },
            success: function (data){
                var thingToDelete = row;
                var grid = $("#list").data("kendoGrid");
                grid.removeRow(thingToDelete);
            },
            error: function (xhr, textStatus, errorThrown){
                alert("Error while soft-deleting person"+ "\n"+ xhr + "\n"+ textStatus + "\n" + errorThrown);
            }
        });
    }
}

这一切都很好,数据库被填充,grid.removeRow()使行淡出,但随后页面重新加载,这是我不想要的。

你知道怎么停止页面重载吗?

EN

回答 3

Stack Overflow用户

发布于 2015-07-06 12:47:38

下面的代码显示了如何使用自定义的delete命令删除行。

代码语言:javascript
复制
  $("#grid").kendoGrid({
        columns: [
            {
                command: [{ name: "edit" }, {
                    name: "Delete", imageClass: "k-icon k-i-close", click: function (e) {
                        e.preventDefault();
                        var dataItem = this.dataItem($(e.target).closest("tr"));
                        if (confirm('Do you really want to delete this record?')) {
                            var dataSource = $("#grid").data("kendoGrid").dataSource;
                            dataSource.remove(dataItem);
                            dataSource.sync();
                        }
                    }
                }], title: " ", width: "200px"
            }
        ]
    });

希望这能有所帮助

票数 14
EN

Stack Overflow用户

发布于 2015-07-03 15:26:03

网格已经支持记录的创建、更新和删除。你不应该尝试自己去实现它。

您需要在数据源上定义销毁,如here

代码语言:javascript
复制
transport: {
    read:  {
             url: crudServiceBaseUrl + "/Products",
    },
    destroy: {
               url: crudServiceBaseUrl + "/Products/Destroy",
    }
}

您还可以打开删除confirmation

代码语言:javascript
复制
    editable: {
     confirmation: "Are you sure that you want to delete this record?"
   }

编辑:为了有条件地显示删除按钮,您可以连接网格的DataBound-Event。您还需要一些指示是否显示该按钮。在我的示例中,我使用了一个名为HideButton的属性。也许你必须调整类。k-grid-delete剩下的就可以了。

代码语言:javascript
复制
$("#grid").kendoGrid({
         ... other configuration ...
         dataBound: onDataBound
});

function onDataBound(e) {
        var grid = this;
        var ds = grid.dataSource;
        var max = ds.data().length;
        for (var i = 0; i < max; i++) {
            var currentUid = ds.at([i]).uid;
            var currentRow = grid.table.find("tr[data-uid='" + currentUid + "']");
            if (ds.at(i).HideButton) {
                var editButton = $(currentRow).find(".k-grid-delete");
                editButton.hide();
            }
        }
    }
票数 2
EN

Stack Overflow用户

发布于 2021-06-29 23:16:23

使用kendo ui删除行的其他方法

代码语言:javascript
复制
    $("#grid").kendoGrid({
        columns: [
        {       
            command: [
            {
             name: "remove",
              text: '',
              iconClass : 'k-icon k-i-delete',
              
              click: (e) => {
                e.preventDefault();
                const row = $(e.target).closest('tr')[0];
    
                const grid = $(e.target).closest('#grid').data("kendoGrid");
                grid.removeRow(row);
                //grid.saveChanges(); //if you need to immediately push changes on the server 
              }
             },
         
    ]
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31183593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档