如何从组合框更新KendoGrid

时间:2015-08-05 07:58:32

标签: c# asp.net asp.net-mvc kendo-grid kendo-asp.net-mvc

我正在使用Kendo UI在ASP.NET MVC中编写一个Web应用程序。我在Kendo Grid中可视化数据如下:

 @(Html.Kendo().Grid<MyModel>()
  .Name("grid")
  .DataSource(dataSource => dataSource // Configure the grid data source
      .Ajax() // Specify that ajax binding is used
      .Read(read => read.Action("ReadAction", "MyController", new { /*route values*/ }))
    )
  .Columns(columns =>
  {
      columns.Bound(n => n.Month).Title("Month").ClientTemplate("<input type='hidden' value='#=Month#' id='hfMonth'/>").Hidden();
      columns.AutoGenerate(true);          

  })
  .Pageable()
  .Sortable()

现在我需要根据<select>的更改事件触发网格更新。我怎样才能做到这一点?我从昨天开始尝试了几种可能性,并没有取得任何成功。

1 个答案:

答案 0 :(得分:0)

如果没有看到组合框的代码,我会执行以下操作:

查看

@(Html.Kendo().ComboBox()
      .Name("combo")
      .DataTextField("Text")
      .DataValueField("Value")
      .BindTo(new List<SelectListItem>() {
          new SelectListItem() {
            Text = "Foo", Value = "1"   
          },
          new SelectListItem() {
            Text = "Bar", Value = "2"   
          },
          new SelectListItem() {
            Text = "Baz", Value = "3"   
          }
      })
  .Events(events =>
  {
    events.Change("onChange");
  })
)

<强>的JavaScript

function onChange(e) {

  var grid = $("#grid").data("kendoGrid");
  // if the selected value is not needed
  grid.dataSource.read();

  // if the selected value is needed use below instead
  // changing the route parameter to match yours
  var selectedValue = this.Value();
  grid.dataSource.read({ id : selectedValue });
}

<强>更新

根据@PierpaoloIlConteParis评论:

  

我没有直接指定read.Action方法中的参数,而是使用了处理函数,就像在这篇文章telerik.com/forums/…中一样。现在,在更改组合框值时,操作会使用正确的参数触发