【问题标题】:How do I get dataset page number using getByUid()如何使用 getByUid() 获取数据集页码
【发布时间】:2014-03-02 06:56:17
【问题描述】:

我有一个使用 LoadMore 的列表视图。数据单击加载详细视图,我正在使用 getByUid() 从现有数据集中获取数据。

data = dsOfferList.getByUid(e.view.params.uid);

有没有办法知道该记录属于数据源的哪个页面?如果我使用 dsOfferList.page(),我会在最后一次更改事件之后获得数据集的页码,而不一定是 listview 项来自的页面。

例如,假设我有一个包含 200 条记录的数据集,我正在使用 serverPaging 并且 pageSize 为 50。最初,dsOfferList.page() 将返回 1。然后我向下滚动列表并单击加载更多按钮。现在 dsOfferList.page() 将返回 2。但如果我向上滚动列表中的一些项目,这些项目(仍加载在 DOM 中)来自第 1 页。我需要能够单击列表视图项目之一并知道如果它是从第 1 页数据源或第 2 页数据源加载的。

如何获取被点击的listview项的页码?

【问题讨论】:

    标签: jquery listview kendo-ui kendo-mobile kendo-datasource


    【解决方案1】:

    你可以这样做

    data = dsOfferList.getByUid(e.view.params.uid);
    var index = dsOfferList.data().indexOf(data);
    var page = Math.round(index/dsOfferList.pageSize()) + 1;
    

    【讨论】:

    • 完美。就是这样!
    • 对不起@Petur Subev。现在我正在测试,这并不完全符合我的预期。使用它,页面变量在索引 26 处更改为“2”,而 dsOfferList.page() 仍为 1。
    【解决方案2】:

    到目前为止,我还没有找到从 schema.parse() 访问当前 datasource.page() 的方法,但是,您可以从 datasource.change() 访问。我最终使用 datasource.change() 函数将返回的数据逐行(包括页面变量)推送到第二个数据源对象中。所以现在每次数据源触发时,它都会自动使用数据更新第二个数据源,包括我需要的页面变量。

    有一点要记住,即使您从第一个数据源传递 UID,第二个数据源的 UID 也是不同的。我在两个数据源中都设置了 schema.id,并在引用特定数据行时使用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-07
      • 2014-04-07
      • 1970-01-01
      • 2020-11-02
      • 2019-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多