在网格之间拖放之后不保持kendo mcv网格行格式

时间:2017-09-07 15:58:35

标签: javascript kendo-ui drag-and-drop kendo-grid kendo-asp.net-mvc

问题: 从一个网格拖拽到另一个网格(两个方向)的结果导致行数据未与适当的标头正确对齐。

在拖放之前: enter image description here

之后(将行放入另一个表,然后放回原始表) enter image description here

为简洁起见,我将发布网格的列定义。网格使用相同的模型,但并非所有列都在两个网格中都可见。

GRID1:

  ...
    .Name("Group1")
    .Columns(columns =>
           {
              columns.Bound(e => e.FlagId).Hidden(true);
              columns.Bound(e => e.TransactionId).Hidden(true);
              columns.Bound(e => e.EmployeeId).Hidden(true);
              columns.Bound(e => e.EmployeeName);
              columns.Bound(e => e.FlagDate).Hidden(true);
              columns.Bound(e => e.FlagCreatedById).Hidden(true);
              columns.Bound(e => e.FlagCreatedBy).Hidden(true);
              columns.Bound(e => e.Reason).Hidden(true);
              columns.Bound(e => e.Score).HtmlAttributes(new { @class = "currency" });
                        columns.Bound(e => e.NumberOfTransactions).HtmlAttributes(new { @class = "currency" });
                        columns.Bound(e => e.TotalAmount).HtmlAttributes(new { @class = "currency" });
                    })
  ...

网格2:

  ...
   .Name("Group2")
   .Columns(columns =>
          {
              columns.Bound(e => e.FlagId).Hidden(true);
              columns.Bound(e => e.TransactionId).Hidden(true);
              columns.Bound(e => e.EmployeeId).Hidden(true);
              columns.Bound(e => e.EmployeeName);
              columns.Bound(e => e.FlagDate);
              columns.Bound(e => e.FlagCreatedById).Hidden(true);
              columns.Bound(e => e.FlagCreatedBy);
              columns.Bound(e => e.Reason);
              columns.Bound(e => e.Score).HtmlAttributes(new { @class = "currency" });
              columns.Bound(e => e.NumberOfTransactions).Hidden();
              columns.Bound(e => e.TotalAmount).HtmlAttributes(new { @class = "currency" });
          })
  ...

drop javascript:

   group1.kendoDropTarget({
        drop: function (e) {
            console.log("e.draggable.currentTarget: %O", e.draggable.currentTarget);

            e.dropTarget.append($(e.draggable.currentTarget).clone());
            $(e.draggable.currentTarget).remove();
        },
        group: "gridGroup2"
    });

1 个答案:

答案 0 :(得分:1)

尝试复制并仅将数据添加到目标网格,而不是使用DOM - 这在这种情况下不是一个好习惯。

drop: function(e) {
    var sourceGrid = $(e.draggable.element).data("kendoGrid"),
        dataItem = sourceGrid.dataItem(e.draggable.currentTarget);

    $(e.dropTarget).data("kendoGrid").dataSource.add(dataItem);
}

Demo