如何使用Kendo UI Grid的SetDataSource方法

有没有人能够使用kendo UI网格的setdatasource方法? 我相信这用于分配可以在稍后阶段分配给网格的数据源,也用于网格刷新目的。 但是我找不到任何适当的文档来解释如何使用这种方法并制作可刷新的网格。

我试图通过远程ajax调用更新我的数据源。 我还假设通过将autosync属性设置为true来更新源时应该自动刷新。 每次我点击日历控件我都会将日期值传递给GetRemoteData函数,以便通过ajax请求更新数据。

目前这不起作用。 有什么解决方案的任何线索?

我的看法

$('#calendarContainer').kendoCalendar({ format: "dd/MM/yyyy", culture: "en-GB", change: onDateChange }); function onDateChange() { var selectedDate = kendo.toString(this.value(), 'dd/MM/yyyy'); GetRemoteData(selectedDate); /* $("#grid").data("kendoGrid").dataSource.data(bob); $("#grid").data("kendoGrid").dataSource.read(); */ } $('#grid').kendoGrid({ dataSource:GetRemoteData(date), scrollable: { virtual: true }, navigatable: true, groupable: true, sortable: true, selectable: "row", pageable: true, pageable: { input: true, numeric: false }, resizable: true, reorderable: true, filterable: { extra: false }, columns: [ { field: "DealNumber", width: 150, title: "DealNumber", filterable: { operators: { string: { startswith: "Starts With", contains: "Contains" } } }, }, { field: "DealIssuer", width: 150, title: "Issuer", filterable: { operators: { string: { startswith: "Starts With", contains: "Contains" } } } }, { field: "Ticker", width: 150, title: "Ticker", filterable: { operators: { string: { startswith: "Starts With", contains: "Contains" } } } }, { field: "DealType", width: 150, title: "Type", filterable: { operators: { string: { startswith: "Starts With", contains: "Contains" } } } }, { field: "DealValue", width: 150, title: "Value", filterable: { operators: { string: { startswith: "Starts With", contains: "Contains" } } } }, { field: "DealStatus", width: 150, title: "Status", filterable: { operators: { string: { startswith: "Starts With", contains: "Contains" } } } }, { field: "DealPricingCompletionDate", width: 230, title: "DealPricingCompletionDate", format: "{0:dd/MM/yyyy}", // template: '#= kendo.toString(StartDate, "dd/MM/yyyy") #', filterable: { ui: "datetimepicker", operators: { date: { gt: "After", lt: "Before", eq: "Equals" }, messages: { filter: "Apply", clear: "Clear" } } } }, { command: { text: "View Details", click: showDetails }, title: " ", width: "140px" }, ], editable: "popup", height: 600 }).data("kendoGrid"); function GetRemoteData(date) { var chosenDate; if (typeof date == "undefined") { chosenDate = "12-12-2013"; } else { chosenDate = date; } var source = new kendo.data.DataSource({ autoSync: true, transport: { read: { type: "GET", url: "http://localhost:35798/RestServiceImpl.svc/GetDealData", dataType: "jsonp", contentType: "application/json; charset=utf-8", cache: false, }, parameterMap: function (data, type) { var data = { startDate: chosenDate } return data; } }, schema: { model: { fields: { DealNumber: { type: "string" }, DealIssuer: { type: "string" }, Ticker: { type: "string" }, DealType: { type: "string" }, DealValue: { type: "number" }, DealStatus: { type: "string" }, DealPricingCompletionDate: { type: "date" } } } }, pageSize: 16 }); source.fetch(function () { var data = this.data(); }); return source; } 

你都尝试了些什么? 这是非常基本的。

例:

 var ddl = $('#testDropDown').data("kendoDropDownList"); var otherDropDownList= $('#otherDropDown').data("kendoDropDownList"); var ds = new kendo.data.DataSource(); ds.data(otherDropDownList.dataSource.data()); // set new DataSource to otherDropDown's data source then filter it ds.filter( { field: "Id", operator: "eq", value: parseInt(id) } ) ddl.setDataSource(ds); 

显然,无论你有哪种情况,这都会有所不同。

网格更新

 var ds = new kendo.data.DataSource(); var grid = $('#grid').data("kendoGrid"); grid.setDataSource(ds); // sets to a blank dataSource 

或者,将此dataSource与另一个网格一起使用?

 var gridDataSource = $('#grid').data("kendoGrid").dataSource; var secondGrid = $('#secondGrid').data("kendoGrid"); secondGrid.setDataSource(gridDataSource); 

如果你想设置setDataSource,另一种方法是从你的ajax请求返回的对象创建一个dataSource,如下面由Brett解释LINK

  var dataSource = new kendo.data.DataSource({ data: "your object returned by ajax" }); $('#GridKatildigiKurslar').data('kendoGrid').setDataSource(dataSource); 

关闭课程网格应配置为显示返回的对象。