迭代时,在选定的网格行上,索引为-1

时间:2013-01-28 17:45:06

标签: kendo-ui kendo-grid

我的要求是循环遍历网格的所有选定行,并使用给定值在数据源上设置字段。我有以下代码并遍历一个kendo ui网格的选定行。

$('#grid').data("kendoGrid").select().each(function () {
                if($('#grid').data().kendoGrid.dataSource.data()[$(this).index()] != null ){

                    var myItem = $('#grid').data().kendoGrid.dataSource.data()[$(this).index()];
                    myItem.set(myFiled, myValue);
                    leg.push(myItem);

                }
            });

问题是我的代码到达myItem.set(myFiled,myValue)之后;索引得到值-1,它在下一次迭代时保持这个值。

当删除.set方法时,我发现我没有相同的行为,我的索引保持正确的值。为什么会发生这种情况?

此外,该行之间有什么区别:

i)$('#grid')。data(“kendoGrid”)。dataItem($(this))。set(myField,myValue);

ii)$('#grid')。data()。kendoGrid.dataSource.data()[$(this).index()]。set(myField,myValue);

我知道第一个与网格上的值有关。不幸的是,我从未设法设置(i)所示的值。第(i)行显示的代码似乎根本不适用于set函数。

我从Refresh a single Kendo grid rowKendo-UI grid Set Value in grid with Javascript获取了我的例子,用于案例(i)和(ii)。

1 个答案:

答案 0 :(得分:1)

我找到了解决方案/解决方法。虽然我仍然不明白为什么剑道网格索引有这种行为。

而不是在迭代中使用myItem.set(myField,myValue);我将我的代码更改为myItem [myField] = myValue;

使用此方法更改了值,未触发更改事件(根据需要),并且索引保持其值也是必需的。