1

我的要求是遍历网格的所有选定行,并在数据源上设置一个具有给定值的字段。我有以下代码并遍历 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 row and Kendo-UI grid Set Value in grid with Javascript for case (i) and (ii) 。

4

1 回答 1

1

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

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

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

于 2013-01-29T09:10:33.477 回答