【问题标题】:Kendo UI DataSource remove item very slowKendo UI DataSource 删除项目非常慢
【发布时间】:2016-01-11 23:55:17
【问题描述】:

我有一个 kendo ui 网格,它使用包含少于 40 个项目的数据源填充。每个项目大约有 10 个字段,其中一个是包含不超过 3 个项目的数组。该网格有一个详细信息模板,其中还包含一个由主记录中的数组字段填充的网格。

当我调用 dataSource.remove(item) 时,大约需要 10 秒才能删除项目。

这里是数据源:

var ds = new kendo.data.DataSource({
  transport: {
    read: function (options) {
      $.ajax({
        url: 'some service url',
        type: 'GET'
      }).success(function (data) {
        options.success(data);
      })
    },
  },
  sort: { field: 'Ordinal', dir: 'asc' },
  schema: {
    model: {
      id: 'ID',
      fields: {
        Name: { editable: false },
        Ordinal: { editable: false }
      }
    }
  }
})

这是我的网格:

<div id="grd" data-role="grid"
     data-auto-bind="true"
     data-editable="true"
     data-selectable="false"
     data-resizable="true"
     data-sortable="true"
     data-scrollable="true"
     data-detail-template="fTemplate"
     data-columns="[
                   { field: 'Name', title: 'Name' },
                   { template: kendo.template($('#tStatus').html()), title: 'Status', width: '150px' },
                   { template: kendo.template($('#tError').html()), title: 'Continue On Error', width: '150px' },
                   { field: 'Ordinal', title: 'Order', width: '75px' }
                   ]"
     data-bind="source: ds, events: { detailInit: initializeDetails }" style="height: 300px;">
</div>

我很难理解为什么性能缓慢。我之前用过remove方法,从来没有遇到过问题。

非常感谢任何建议。

谢谢。

【问题讨论】:

    标签: kendo-ui kendo-grid


    【解决方案1】:

    经过几个小时的玩耍和测试,我找到了性能缓慢的原因。

    问题是我的网格有 2 个模板列,一个是下拉列表,另一个是复选框。如果我删除这些,一切正常。我猜性能下降是因为网格必须渲染 2 个模板并为每一行启动和绑定小部件。

    有没有办法在这种情况下提高性能?

    【讨论】:

    • 在我的情况下,它在调用datasource.filter() 时陷入困境。我尝试删除 5 个模板列,但速度没有明显变化。
    猜你喜欢
    • 1970-01-01
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-10
    • 2013-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多