2016-10-14 6 views
0

После загрузки сетки кендо я хотел бы обновить/перезагрузить сетку новыми данными, нажав кнопку.Как обновить сетку кендо с новыми данными

Контроллер:

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

Есть две основные задачи для обработки в описанном сценарии:

  1. dataSource.data должен указывать на массив, а не объект
  2. , если новые данные будут представлены совершенно разные поля, вы также должны замените столбцы сетки

Возможный способ установки нового источника данных и новых столбцов - через setOptions.

Вот пример:

http://dojo.telerik.com/oWahO

UPDATE

Если столбцы останутся прежними после того, как данные перезагружается, то вы можете использовать следующий подход:

$("#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

+0

То, что я пытался сделать, не изменить столбцы сетки, но изменить данные, на основании нового параметра. Как указывалось выше, я хотел бы, чтобы значение id передавалось как новый параметр при нажатии кнопки. Как это будет передано событию для обновления сетки новыми данными на основе идентификатора 6319? –

+0

См. Мой обновленный ответ – dimodi

Смежные вопросы