ajax 呼び出しの結果を使用して、どの Kendo Grid に入力するかを決定できるようにしたいと考えています。配列に項目が 1 つしかない場合は、グリッドにデータを入力します。それ以外の場合は、複数の項目用に別のグリッドを作成します。
私のjQuery
$.ajax({
type: "POST",
dataType: "json",
url: 'Item/GetItems/',
data: { number: number },
success: function (data) {
if (data.length == 1) {
var sGrid = $("#SingleGrid").data("kendoGrid").dataSource.data(data);
//I´ve also tried this
//sGrid.refresh();
}
else {
var mGrid = $("#MultipleGrid").data("kendoGrid").dataSource.data(data);
//I´ve also tried this
//mGrid .refresh();
}
},
error: function () {
}
});
私のコントローラーアクション
public ActionResult GetItems([DataSourceRequest] DataSourceRequest request, string number)
{
var items = _idg.GetItems(number);
return Json(items.ToDataSourceResult(request, ModelState));
}
Firebug を監視してきましたが、エラーは表示されません。グリッドの 1 つにデータを入力することを決定して、サーバーへの 2 回目の呼び出しを防止しようとしています。このクライアント側のように dataSource を強制的に更新する方法はありますか? (2回目にサーバーを呼び出す dataSource で read 関数を呼び出さずに)
###### 編集済み ########
function TestGrid() {
var dataSource = new kendo.data.DataSource({
transport: {
read: {
type: "POST",
dataType: "json",
url: 'Item/GetItems/'
}
},
schema: {
data: function (response) {
// Here the Total is always correct
return response.Total;
}
}
});
dataSource.fetch(function () {
var kendoGrid;
var data = this.data();
//Here the data does not include my Total
alert(data);
if (data.length == 1) {
kendoGrid = $("#SingleGrid").data("kendoGrid");
} else {
kendoGrid = $("#MultipleGrid").data("kendoGrid");
}
kendoGrid.setDataSource(dataSource);
kendoGrid.refresh();
});
}
上記の例から、this.data() からの合計数に到達できないようです。Firebug でデバッグすると、合計数が常に正しいことがわかります。何か案は?