0

setKendoUIグリッドを使用して要素を変更すると、選択が削除されます。

KendoUIが次のようにDataSource定義されている場合:

var dataSource = new kendo.data.DataSource({
    data    : [
        { "id": 1, "item": "item1", "value": "foo" },
        { "id": 2, "item": "item2", "value": "foo" },
        { "id": 3, "item": "item3", "value": "foo" },
        { "id": 4, "item": "item4", "value": "foo" }
    ],
    pageSize: 5
});

gridとして:

var grid = $("#grid").kendoGrid({
    dataSource: dataSource,
    columns   : [
        { field: "item", title: "Item" },
        { field: "value", title: "Value" }
    ],
    selectable: "row"
}).data("kendoGrid");

行をクリックして(選択して)、次のコードを使用してモデルを更新すると、次のようになります。

dataSource.data()[0].set("value", "bar");

選択が失われます。

JSFiddleのサンプルコードはこちら

指示:

  1. 任意の行を選択します。
  2. value最初の行のを変更するためのボタンをクリックします。

ローカルを更新するときに選択を保持する方法はありますDataSourceか?

4

2 に答える 2

2

これは、dataSourceの変更イベントが発生したときに予想される動作であり、グリッドが反応して再描画されます。次のように、フィールドをサイレントに更新できます。

dataSource.data()[0].value = "bar";

ただし、これによって変更イベントがトリガーされることはなく、グリッドも更新されません。

「更新」の間にグリッドの選択を維持するために、このコードライブラリの記事で説明されているアプローチを使用できます。あなたはそれらをクッキーまたはメモリに保存することができます、それはあなた次第です。

よろしく

于 2013-01-15T01:07:25.947 に答える
0

私は非常によく似た問題の解決策を見つけることができました。選択した行を変更した後、次の行を選択しようとしましたが、データ項目を更新すると選択がクリアされました。

秘訣は、data-uid選択する要素を保存することでした。更新後、uidで要素を選択するだけです。

var selected = grid.select();
var next = selected.next();
var nextUid = next.data("uid");
var dataItem = grid.dataItem(selected);
if (dataItem) {
    dataItem.set("value", dataItem.get("value") - 1);
    if (next.length)
        grid.select($("#grid").find("*[data-uid='" + nextUid + "']"));
}

ここで試すことができます。

于 2014-08-22T12:33:12.410 に答える