【问题标题】:Kendo grid Insert new record on the last page, last row position剑道网格在最后一页,最后一行位置插入新记录
【发布时间】:2013-05-23 02:45:18
【问题描述】:

我在内联 GridEditMode 中使用剑道网格,并将 GridInsertRowPosition 设置为底部。 Ajax 用于数据绑定。启用排序并按 DateTime 字段排序。 页面大小设置为 10。

当有多个页面(超过 10 条记录)时会出现问题。我有一个 javascript 函数可以跳转到最后一页并在底部显示新行。但是在某些时候触发了排序事件,并且网格移动到只读模式。

是否有可能仅在添加新行的情况下阻止网格排序?

欢迎任何帮助。 谢谢!

【问题讨论】:

    标签: kendo-ui kendo-grid kendo-asp.net-mvc


    【解决方案1】:

    您应该在工具栏中定义一个自定义命令:

    toolbar   : [
        {
            name : "my-create",
            text : "Add new record"
        }
    ],
    

    然后,添加一个事件监听器,使用选择器k-grid- 加上命令的名称。

    $(".k-grid-my-create", grid.element).on("click", function (e) {
    }
    

    最后我们将使用 Kendo UI 数据源的能力在特定点插入:

    var dataSource = grid.dataSource;
    var total = dataSource.data().length;
    dataSource.insert(total, {});
    dataSource.page(dataSource.totalPages());
    grid.editRow(grid.tbody.children().last());
    

    请注意,我们应该在插入行之后移到最后一页。列按日期排序应该没问题。

    请检查这里的代码:http://jsfiddle.net/OnaBai/sAVGk/

    【讨论】:

    • 在最后一页底部插入新行正在工作。但行不停留在编辑模式。在编辑行中显示新行后,立即调用数据绑定事件,导致退出编辑模式并重新绑定网格。我错过了什么吗?
    • 你在dataBound处理程序中做了什么?我无法重现它。尝试删除代码(只留下一些 alert 或 console.log),然后再试一次。
    • OP 有一个 MVC 标签。他们应该使用内置的扩展方法来做到这一点。然后你可以使用 .ToolBar(t => { t.Create().Text("Create"); })
    • 您的示例无法正常工作。只需单击列标题 First Name 一次,然后单击 Add new record 按钮。
    【解决方案2】:

    查看新的剑道设置:createAt

    只需将其设置为“底部”:

    ...
    createAt: 'bottom',
    ...
    

    【讨论】:

    • 这是正确的答案。如果使用 Razor 语法: .Editable(editable => editable.CreateAt(GridInsertRowPosition.Bottom))
    • 对我来说也是开箱即用的!
    【解决方案3】:

    是否有可能仅在以下情况下阻止网格排序 添加了新行?

    在添加按钮处理程序中使用下一个代码:

            var table = $("#gridId").data("kendoGrid");
            var sorting = table.dataSource.sort();
    
            if (sorting) {
                table.dataSource.sort(null);
            }
            table.addRow();
    

    排序将被删除,新项目将处于编辑模式。

    【讨论】:

      【解决方案4】:

      如果是 MVC Kendo Grid,附加 .CreateAt(GridInsertRowPosition.Bottom) 属性。下面是示例行,

      .Editable(e => e.Mode(GridEditMode.InCell).CreateAt(GridInsertRowPosition.Bottom))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-15
        • 1970-01-01
        • 1970-01-01
        • 2023-03-28
        • 1970-01-01
        相关资源
        最近更新 更多