【问题标题】:Remove single item in Kendo UI Grid using AngularJs使用 AngularJs 删除 Kendo UI Grid 中的单个项目
【发布时间】:2015-04-10 09:10:42
【问题描述】:

我在一个带有 AngularJs 的网站上有一个 Kendo UI Grid。如何更新/添加/删除 DataSource 中的单个数组项并在不刷新整个网格的情况下更新网格?

如果我尝试仅替换 DataSource 对象,网格肯定会更新,但所有分组、列排序和排序都会重置。

更新 #1 - 持久滚动位置

我通过阅读这篇文章实现了这一点:http://www.telerik.com/forums/kendo-grid-how-to-keep-scoll-position-after-calling-sync-(with-batch-property-set-to-true) 最终得到了这个代码:

$scope.activityGridOptions = {
  scrollable: true,
  dataBound: function(e) {
    restoreScrollState();
  },
  dataBinding: function(e) {
    saveScrollState();
  }
  // ...
}

function saveScrollState() {
  $("#kendogrid .k-grid-content").scroll(function () {
    webStorage.local.add("gridScrollTop", $(this).scrollTop());
    webStorage.local.add("gridScrollLeft", $(this).scrollLeft());
  });
}

function restoreScrollState() {
  // Restore scroll state
  $("#kendogrid .k-grid-content").scrollTop(webStorage.local.get("gridScrollTop"));
  $("#kendogrid .k-grid-content").scrollLeft(webStorage.local.get("gridScrollLeft"));
}

更新 #2:Angular ui-grid

在与 Kendo UI Grid 斗争了两个星期后,我终于在昨天晚上放弃了整个框架。然后我选择了其他顶级网格之一 - 最终得到了Angular ui-grid,经过大约 7 个小时的工作,我能够对其进行编程以替换 Kendo UI Grid。

我并不是说 Kendo UI 是糟糕的软件,但对我来说它似乎并不能很好地说明 Angular。至少不符合我的具体要求。

【问题讨论】:

    标签: angularjs kendo-ui


    【解决方案1】:

    DataSource 公开了您可以使用的以下方法: - add - at - get - insert - remove

    使用这些,您可以更新/添加/删除数据源中的项目,而无需完全替换它。 所有这些方法都将 DataSource 设置为“脏”,因此 UI 会自动更新。

    【讨论】:

    • 谢谢。似乎工作正常。更换物品的最佳方式是什么?删除并重新添加?或者有什么方法可以在运行 .at(...) 后替换行内的数据?我尝试替换由 .at() 产生的对象的属性之一,然后将脏设置为 true。它奏效了——但这是要走的路吗?
    • remove 然后insert 是如果您不能确保删除/替换at 返回的对象上的所有“旧”数据的方法。
    • 谢谢塞尔吉。我尝试删除/重新添加和使用下划线的扩展方法将更新的属性传递给更新的项目(并将项目设置为脏),但是这两种方法都会使滚动条重置,折叠组以打开并重新排序列以重置。我希望在不重置 UI 的情况下更新该行。有什么方法可以实现吗?
    • 不幸的是,KendoUI 本身不会保持滚动位置。您可能会发现这很有用:telerik.com/forums/data-source-update-resets-grid-scollbar
    • 是的,我自己找到并实现了那个。所以现在滚动位置是持久的。我目前正在尝试使列可见性、宽度、过滤和分组持久化。我是否正确,这是在列、分组和过滤上实现持久性的唯一方法? jsbin.com/anisip/1/edit?js,output --- 另外,我想知道我是否真的以正确的方式接近这一点。必须有很多实现,其中 AngularJs 通过数据源更新/添加/删除网格中的单行,并且仍然维护列的过滤/分组/排序/调整大小?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多