0

マスター テーブルを折りたたむことなく、サブディテール テーブルからマスター テーブルを更新できますか?

私はこのビットのコードを実行しています:

update: {
   url: "/engine.php?q=updateProjectDetails",
   dataType: "json",
   complete: function(e){
     var parentRow = $('tr').closest(".k-detail-row").prev();
     var grid = parentRow.closest("[data-role='grid']").data("kendoGrid");
     var parentDataItem = grid.dataItem(parentRow);
     parentDataItem.set("tscore", JSON.parse(e.responseText).d[0].tscore);
   }
}

子テーブルからセットを実行すると、マスター テーブルはすべての子要素を折りたたんで、マスター テーブル (データソース) の 1 つの列だけを更新します。

基本的に、展開されたテーブルをそのままにして、その1つのフィールドを更新するだけで、この動作を回避する方法はありますか?

ありがとう

4

1 に答える 1

0

それはそれほど簡単ではないようです:

  1. これを行うsetと、マスター グリッドが更新されて更新が行われ、すべての行が折りたたまれます。
  2. 後に行を展開する ( を使用expandRow)ことsetは簡単ではありません。マスターを更新すると、HTML が変更されたように見え、有効ではなくなるため、parentRow呼び出しに使用することはできません。grid.expandRow(parentRow);

したがって、機能しているように見えるのは、行を保存し、uidそれを使用して再度見つけてparentRow展開することです。何かのようなもの:

click: function (e) {
    var parentRow = $(e.target).closest(".k-detail-row").prev();
    //find parent grid
    var grid = parentRow.closest("[data-role='grid']").data("kendoGrid");
    //get the parent grid row DataItem
    var parentDataItem = grid.dataItem(parentRow);
    var uid = parentDataItem.uid;
    parentDataItem.set("FirstName", "OnaBai");
    grid.expandRow(grid.tbody.find("tr[data-uid='" + uid + "']"));
}

しかし、これは内部グリッドの再ロードを妨げません...

于 2013-03-22T08:32:25.163 に答える