我在使用 MVC 包装器声明的网页上有一个 KendoUI ListView 小部件。我需要从数据源中获取 ListView 中所选项目的数据项。正如此论坛帖子所建议的:
http://www.telerik.com/forums/get-listview-item-id-from-datasource
我试过了:
// the ListView is bound to a dataSource with only one item
var selected = listView.select();
// when the first (only) item is selected the below returns 1
var itemIndex = selected.index();
// the index needed for the below is 0
var dataItem = listView.dataSource.view()[itemIndex];
问题是所选项目的 index() 函数返回基于 1 的索引。我想得很好,好吧。我将添加一行来减少索引。这一直有效,直到我在同一页面上打开了一个 KendoUI DropDownList。尽管 DropDownList 与 ListView 无关并且有自己的数据源,但上面的代码 selected.index() 返回 0。我无法解决代码问题。似乎 ListView 项的 index() 函数应该返回一个从零开始的索引,但它不会或至少不会,直到另一个 KendoUI 小部件被激活。
我正在使用 2014.1.416
编辑:我认为问题一定出在我的实现上。我创建了自己的 jsFiddle,它按预期工作,即 index() 函数返回一个从零开始的索引。我实际上使用我安装的 kendoui 创建了一个测试应用程序,其行为正如我在问题中报告的那样,即基于一个的索引。我需要部署我的应用程序,因此我通过将所需的 dataItem 放在 ListView 模板的隐藏字段中来解决这个问题,我在 html 中找到它。总结一下,我认为这不是剑道问题。当我有时间时,我会重新安装我们的 kendoui 并重新测试。