如何在文档就绪函数中附加kendo Grid的数据绑定事件?

时间:2015-06-02 15:06:20

标签: jquery kendo-ui kendo-grid kendo-asp.net-mvc

我有一个MVC Kendo UI网格,我试图附加dataBound事件。以下是我尝试使用的两种方法。如果我能

,我会倾向于第一种方法
@(Html.Kendo().Grid<BatchDetails>()
    .Name("Grid")
    .Columns(col =>
    {
        col.Bound(p => p.BatchKey).Title("State");
        col.Bound(p => p.OriginalCost).Title("Total Cost");
     })
        .AutoBind(true)
        .DataSource(dataSource => dataSource
            .Ajax()
            .PageSize(20)                    
            .Read(read => read
                .Action("GetData", "Home", new { batchID = Model.BatchID })))

1&gt; 我想在文档就绪函数中绑定网格的DataBound事件。   但当我这样做时,我得到空参考

$function({
     var grid = $("#Grid").data("kendoGrid"); // grid variable is null here
     grid.bind("dataBound", function(){
     //dosomething here
 }); 

})

2&gt; 如果我使用以下方法绑定事件,那么我必须将onDataGridBound函数声明为Global。网格无法访问范围函数

 @(Html.Kendo().Grid<BatchDetails>()
      .Name("Grid")
      .Events(x => x.DataBound("onDataGridBound"))
  ) 

有没有办法将onDataGridBound声明为作用域函数,并且网格仍然可以访问它?

1 个答案:

答案 0 :(得分:3)

根据Telerik documentation,你必须确保你的准备好的功能在>小部件声明后放置:

  

您可以通过数据jQuery方法获取由服务器端包装器初始化的客户端对象的引用。在 ID jQuery选择器中使用窗口小部件的名称,并在document.ready处理程序中获取引用,该窗口小部件在窗口小部件声明之后放置或调用 。这将确保窗口小部件已初始化并且客户端对象存在。获得对象引用后,您可以使用窗口小部件的客户端API。

@(Html.Kendo().NumericTextBox()
    .Name("age")
)

<script>
$(function(){
    var numeric = $("#age").data("kendoNumericTextBox");
    numeric.value(10);
});
</script>