初始化后如何将功能附加到kendo网格?

时间:2015-06-09 16:06:04

标签: javascript jquery kendo-ui kendo-grid kendo-datasource

我有一个Kendo Grid,我有JavaScript函数“getFilters”。 “getFilters”函数是在文档就绪中定义的范围函数。目前网格正在调用“getFilters”,如下所示。但这不起作用,因为“getFilters”在网格初始化后被初始化。所以我得到错误 0x800a1391 - JavaScript运行时错误:'getFilters'未定义

我不想让“getFilters”功能全局化。 那么在网格初始化之后如何将“getFilters”附加到dasource?我想在Document Ready中做到这一点

@(Html.Kendo().Grid<MyModel>()
    .Name("Grid")                    
        col.Bound(p => p.State).Title("State");            
        col.Bound(p => p.BatchStatus).Title("Status");
    })
    .AutoBind(false)
    .Pageable()
    .Sortable()                
    .DataSource(dataSource => dataSource
        .Ajax()                    
        .Read(read => read
            .Action("GetData", "MyController")
            .Data("getFilters"))
        .ServerOperation(false))
)

JavaScript文档就绪功能

$(function () {

  function getFilters() {
    return SomeJSON;
  }


  var ds = $("#Grid").data("kendoGrid").dataSource;

      //How do i attach getFilters function to dataSource here?


})

2 个答案:

答案 0 :(得分:0)

您应该从准备好的文档中移出函数getFilters并将其放在网格初始化部分上方或下方的脚本标记内

<script>
function getFilters() {
    return SomeJSON;
  }
</script>


@(Html.Kendo().Grid<MyModel>()
    .Name("Grid")                    
        col.Bound(p => p.State).Title("State");            
        col.Bound(p => p.BatchStatus).Title("Status");
    })
    .AutoBind(false)
    .Pageable()
    .Sortable()                
    .DataSource(dataSource => dataSource
        .Ajax()                    
        .Read(read => read
            .Action("GetData", "MyController")
            .Data("getFilters"))
        .ServerOperation(false))
)

请在refer here中查找SO中的类似问题

答案 1 :(得分:0)

我找到了答案,这可能对其他人有帮助。在这里您可以如何在文档准备中附加功能

  var grid = $("#grid").data("kendoGrid");
  grid.dataSource.transport.options.read.data = getFilters;

然后调用read()重新加载网格。每次调用read()时附加的函数&#34; getFilters&#34;将被执行。

  grid.dataSource.read();