如何用新数据刷新剑道网格
Posted
技术标签:
【中文标题】如何用新数据刷新剑道网格【英文标题】:How to refresh kendo grid with new data 【发布时间】:2017-02-24 08:50:06 【问题描述】:加载剑道网格后,我想通过单击按钮来刷新/重新加载带有新数据的网格。
控制器:
using Kendo.Mvc;
using Kendo.Mvc.Extensions;
using Kendo.Mvc.Infrastructure;
using Kendo.Mvc.UI;
public ActionResult FollowUpGrid_Read([DataSourceRequest]DataSourceRequest request, string name, string id)
List<vmFollowUpGrid> FUPList = new List<vmFollowUpGrid>();
FUPList = (from u in db.usrUserBldgLists
join e in db.entEntities on u.EntID equals e.EntID
join d in db.entDistricts on e.FANo equals d.DistNo
join ed in db.entDistricts on e.OANo equals ed.DistNo
join b in db.entBuildings on e.OBNo equals b.BuildNo
where u.UserID == "A1036719" && u.FANO == id
select new vmFollowUpGrid FANo = u.FANO, FAName = d.DistrictName, OANo = u.OANO, District = ed.DistrictName, OBNo = u.OBNo, Building = b.BuildName).Take(50).ToList();
var FUList = FUPList.ToDataSourceResult(request);
return Json(FUList, JsonRequestBehavior.AllowGet);
cshtml页面:
@(Html.Kendo().Grid<MDEFollowUp.Models.vmFollowUpGrid>()
.Name("FollowUpGrid")
.Columns(columns =>
columns.Bound(p => p.FANo);
columns.Bound(p => p.FAName);
columns.Bound(p => p.OANo);
columns.Bound(p => p.District);
columns.Bound(p => p.OBNo);
columns.Bound(p => p.Building);
)
.Pageable(pageable => pageable
.Refresh(true)
.PageSizes(true)
.ButtonCount(5))
.Sortable()
.Scrollable()
.Filterable()
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(20)
.Read(read => read.Action("FollowUpGrid_Read", "FollowUp").Data("additionalAgencyInfo")))
)
然后是一个按钮单击事件以使用新数据刷新网格,但这似乎无法识别网格分配。
$("#btnclick").click(function ()
var grid = $("#FollowUpGrid").data("tGrid");
var params =
name: "Agency",
id: "63190"
;
var dataSource = new kendo.data.DataSource( data: params );
//grid.rebind(params);
grid.setDataSource(dataSource);
)
我应该如何分配按钮中的网格来完成这个?
【问题讨论】:
【参考方案1】:在所描述的场景中有两个主要任务需要处理:
dataSource.data
应该指向一个数组,而不是一个对象
如果新数据包含完全不同的字段,您还需要替换 Grid 列
设置新数据源和新列的一种可能方法是通过setOptions
。
这是一个例子:
http://dojo.telerik.com/oWahO
更新
如果重新加载数据后列保持不变,则可以使用以下方法:
$("#btnclick").click(function ()
var grid = $("#FollowUpGrid").data("tGrid");
var params =
name: "Agency",
id: "63190"
;
grid.dataSource.read(params);
)
这会将name
和id
参数传递给操作方法,并保留现有的DataSource 实例及其设置。
http://docs.telerik.com/kendo-ui/api/javascript/data/datasource#methods-read
【讨论】:
我试图做的不是更改网格列,而是根据新参数更改数据。正如上面的示例所指出的,我希望在单击按钮时将 id 值作为新参数传递。这将如何传递给事件以使用基于 6319 的 id 的新数据刷新网格?以上是关于如何用新数据刷新剑道网格的主要内容,如果未能解决你的问题,请参考以下文章