Kendo UI データ ソースを使用してサーバー サイドで新しいアイテムを作成する場合、クライアント サイドのデータ アイテムの ID を、サーバー サイドのデータベースに挿入された新しいレコードのID で更新するにはどうすればよいですか?
4 に答える
さらに調査を行うと、実際にはドキュメントに記載されているはずのこの非常に有用な情報が見つかりましたが、見つけにくいフォーラム検索メッセージに「隠されている」:
http://www.kendoui.com/forums/ui/grid/refresh-grid-after-datasource-sync.aspx#2124402
これが最善のアプローチかどうかはわかりませんが、問題は解決しました!
このソリューションでは、データ ソースの読み取りメソッドを使用して、モデル インスタンスをサーバーからのデータで更新するだけです。
貴重な情報は、それが行われる場所です: transport.createオブジェクトの " complete " イベントで!
コードは次のとおりです。
transport: {
read: {
url: "http://myurl.json"
},
create: {
url: "http://mycreate.json",
type: "POST",
complete: function(e) {
$("#grid").data("kendoGrid").dataSource.read();
}
},
readメソッドによって導入される追加のサーバー呼び出しを回避するために、createメソッドにオブジェクトを返すようにすると、データソースが自動的にオブジェクトを挿入します。
あなたがする必要があるのはデータベースからidフィールドを設定してモデルを返すことだけだということを知っています。
たとえば、作成用のASPMVCアクションの疑似コード。
public JsonResult CreateNewRow(RowModel rowModel)
{
// rowModel.id will be defaulted to 0
// save row to server and get new id back
var newId = SaveRowToServer(rowModel);
// set new id to model
rowModel.id = newId;
return Json(rowModel);
}
ジャックの答えに追加するだけです(コメントする評判はありません)。作成アクションと更新アクションが剣道データソースで定義されたものと同じスキーマでデータを返す場合、データソースは Id フィールドと他のフィールドを自動的に更新しますアクション コールによって変更された可能性のあるフィールド。結果を正しく形成するために他に何もする必要はありません。この機能を使用して、サーバー側で一連のものを計算し、データの完全なリロードを必要とせずに結果をクライアントに提示します。