2

我最近遇到了 Kendo UI 的问题,我有 1 个数据源,它被 3 个网格使用。这一切都有效,但由于某种原因,网格的样式由于缺乏更好的词而被“拆除”。

如果我从网格 A 过滤数据源,网格 A 看起来不错,但网格 B 和 C 看起来像这样(不要介意列中的名字“错误”):

网格 B 和 C

如果我从网格 B 中过滤数据源,现在网格 B 看起来不错,但网格 A 和 C 看起来会“被拆除”。可能是什么问题呢?

网格 A:

    $('#grid-a').kendoGrid({
      autoBind: false,
      dataSource: emp_ds,
      toolbar: kendo.template($("#mainlist-template").html()),
      scrollable: true,
      sortable: true,
      selectable: 'row',
      pageable: {
        input: true,
      },
      columns: [{
          field: "id",
          title: "ID",
          width: 100
        },{
          field: "firstname",
          title: "Firstname"
        },{
          field: "lastname",
          title: "Lastname"
        }
      ]
    });

网格 B:

    $('#grid-b').kendoGrid({
      autoBind: false,
      dataSource: emp_ds,
      toolbar: kendo.template($("#emplist-template").html()),
      scrollable: true,
      sortable: true,
      selectable: 'row',
      pageable: {
        input: true,
      },
      columns: [{
          field: "id",
          title: "ID",
          width: 100
        },{
          field: "firstname",
          title: "Firstname"
        },{
          field: "lastname",
          title: "Lastname"
        },{ 
          command: {
            text: 'Select',
            click: function(e) {
              e.preventDefault();

              if(employeeSelectSwitch == 2) {
                return;
              }

              varholder.curUid = $(e.currentTarget).closest("tr").data('uid');

              $('#daterange-dialog').data('kendoWindow').center().open();
            }
          },
          width: 140
      }]
    });

数据源:

emp_ds = new kendo.data.DataSource({
    transport: {
      read: {
        dataType: 'json',
        url: url.employeeList
      }
    },
    schema: {
      model: {
        fields: {
          id: { type: 'number' },
          firstname: { type: 'string' },
          lastname: { type: 'string' },
        }
      }
    },
    pageSize: 15
  });
4

2 回答 2

0

开玩笑地思考为什么需要 3 个网格来显示相同​​的数据,如果您不共享数据源,请使用 3 个数据源。故事看看@Kendo 共享数据源。

于 2013-01-10T12:12:59.357 回答
0

如果您真的只想要一个执行一次的数据源,并且您无法共享它,因为每个数据源的过滤方式不同,

您可以在后台填充数据源,当数据返回时,将其拆分到网格中,如下所示:

 var dsBackground = new kendo.data.DataSource(myDsConfig);

 dsBackground.read().then(function (e) {
    if (dsBackground.data().length > 0) {
        $(".parallel-grid").each(function() {
            var grid = $(this).data("kendoGrid");
            if (grid != null)
            {
                dsBackground.filter({ field: "foo-type", operator: "eq", value:$(this).data("foo-type")});
                grid.dataSource.data(dsBackground.view());
                grid.dataSource.page(1);
                grid.dataSource.pageSize(10);
            }
        });
    }
});

这是一个带有一些假数据的工作示例:

http://dojo.telerik.com/@paltimus/EmUXE/2

于 2017-06-28T15:56:46.553 回答