2016-11-02 15 views
0

私は、行の並び替えをサポートするテンプレートに剣道MVCグリッドを持っています。私は正常に行をドラッグアンドドロップし、イベントが発生したときに(以下のハンドラを参照)、グリッド内の1つまたは複数のセルを編集しない限り、[更新]ボタンをクリックしても保存イベントは発生しません。剣道MVCグリッド保存イベントが発生しない

ドラッグアンドドロップハンドラは、影響を受けたモデル(S)「ダーティ」フラグを設定しないが、それはそれをカットしていないよう:

function onChangeEnumValueOrder(e) { 
    var uid = $(e.draggableEvent.currentTarget).data("uid"); 
    var model = $("#TheGrid").data("kendoGrid").dataSource.getByUid(uid); 
    model.dirty = true; 
} 

任意のヒントまたはヒントが理解されるであろう。

[UPDATE(グリッドの定義)]あなたのonChangeEnumValueOrder

@(Html.Kendo().Grid<EnumItemViewModel>() 
     .Name("TheGrid") 
     .Columns(columns => 
     { 
      columns.Bound(x => x.Id).Visible(false); 
      columns.Bound(x => x.Key).Visible(false); 
      columns.Bound(x => x.SortOrder).Width(10).Sortable(true); 
      columns.Bound(x => x.Value).Width(100); 
      columns.Command(command => command.Custom("Delete").Click("onDeleteEnumItem")).Width(100).Visible(true); 
     }) 
     .DataSource(dataSource => dataSource 
      .Ajax() 
      .Model(model => 
      { 
       model.Id(x => x.Key); 
       model.Field(x => x.Id).DefaultValue(Guid.Empty); 
       model.Field(x => x.Value); 
      }) 
      .Read(read => read.Action("GetEnumItems", "SiteManagement").Data("getFieldIdEnumItemGrid")) 
      .Create(create => create.Action("AddEnumItem", "SiteManagement")) 
      .Update(update => update.Action("UpdateEnumItem", "SiteManagement")) 
      .Destroy(destroy => destroy.Action("DeleteEnumItem", "SiteManagement")) 
      .Events(events => events.Error("onErrorGrid('EnumGrid')")) 
    ) 
     .Editable(editable => editable.DisplayDeleteConfirmation(false).Mode(GridEditMode.InCell)) 
     .ToolBar(toolbar => toolbar.Create()) 
     .Events(events => events.SaveChanges("onSaveEnumItemGrid")) // <-- EVENT NOT FIREING 
     .Sortable(sort => 
     { 
      sort.SortMode(GridSortMode.SingleColumn); 
      sort.AllowUnsort(true); 
     }) 
    ) 
@(Html.Kendo().Sortable() 
     .For("#TheGrid") 
     .Filter("table > tbody > tr") 
     .Cursor("move") 
     .HintHandler("hintHandlerSortable") 
     .PlaceholderHandler("placeholderHandlerSortable") 
     .ContainerSelector("#TheGrid tbody") 
     .Events(events => events.Change("onChangeEnumValueOrder")) 
+0

グリッド定義を投稿できますか? –

+0

完了。時間をいただきありがとうございます! –

+0

遅れて申し訳ありません。更新する実際の値を設定しているようには見えません。あなたはおそらく 'SortOrder'のようなプロパティを、新しいソート値が –

答えて

1

、次のようにsaveChanges()を呼び出します。

function onChangeEnumValueOrder(e) { 
    var uid = $(e.draggableEvent.currentTarget).data("uid"); 
    var model = $("#TheGrid").data("kendoGrid").dataSource.getByUid(uid); 
    model.dirty = true; 

    $("#TheGrid").data("kendoGrid").saveChanges(); 
} 

あなたはまた、このようなあなたのデータを設定することを検討することもできます。

model.set('<Property Name>', <Property Value>) 

これは、あなたのためにダーティーフラグを設定する必要があります。

+0

$(e.draggableEvent.currentTarget)を使用しようとすると、currentTargetが未定義であるという例外が発生します。私は動作するものと似たようなことをしますが、私はその違いについて興味があります。私はすでに別の変数 'ds'にデータソースを持っていますし、次にds.getByUid(e.draggable.currentTarget.data( "uid"))を実行します。 –

関連する問題