gar*_*lur 1 asp.net-mvc jquery asp.net-mvc-4 kendo-ui kendo-grid
我希望能够使用ajax调用的结果来决定我将填充哪个Kendo Grid.如果我只在数组中收到一个项目,我想填充网格,否则我有多个项目的另一个网格.
我的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 () {
}
});
Run Code Online (Sandbox Code Playgroud)
我的控制器动作
public ActionResult GetItems([DataSourceRequest] DataSourceRequest request, string number)
{
var items = _idg.GetItems(number);
return Json(items.ToDataSourceResult(request, ModelState));
}
Run Code Online (Sandbox Code Playgroud)
我一直在监控Firebug,它没有显示任何错误.我试图通过决定填充其中一个网格来阻止对服务器的第二次调用.有没有办法像这个客户端那样强制dataSource刷新?(不调用dataSource上的read函数,它将第二次调用服务器)
###### EDITED ########
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();
});
}
Run Code Online (Sandbox Code Playgroud)
从我上面的例子中我似乎无法达到this.data()的总数.当我使用Firebug进行调试时,我可以看到总数始终是正确的.有任何想法吗?
您可以填充kendo数据源的新实例,加载数据,然后对结果执行操作,设置网格的数据源.也许是这样的:
var dataSource = new kendo.data.DataSource({
transport: {
read: {
type: "POST",
dataType: "json",
url: 'Item/GetItems/',
data: { number: number },
}
}
});
Run Code Online (Sandbox Code Playgroud)
然后从服务器获取数据并对结果进行操作:
dataSource.fetch(function() {
var data = this.data();
var kendoGrid;
if (data.length == 1) {
kendoGrid = $("#SingleGrid").data("kendoGrid");
} else {
kendoGrid = $("#MultipleGrid").data("kendoGrid");
}
// Replace the grids data source with our new populated data source
kendoGrid.setDataSource(dataSource);
kendoGrid.refresh();
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19140 次 |
| 最近记录: |