我如何附加功能到剑道网格后,它初始化

How do I attach function to kendo grid after it initialized?

本文关键字:网格 初始化 何附加 功能      更新时间:2023-09-26

我有一个Kendo Grid和一个JavaScript函数" getFilters "。"getFilters"函数是在document ready中定义的作用域函数。目前,网格正在调用"getFilters",如下所示。但这不起作用,因为"getFilters"在网格初始化之后被初始化。所以出现了错误0x800a1391 - JavaScript运行时错误:'getFilters'未定义

我不想让" getFilters "函数成为全局的。那么,我如何将"getFilters"附加到源网格初始化后?我想在文档准备

中设置
@(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?

})

您应该将函数getFilters从文档中移出,并将其放置在网格初始化部分上方或下方的script标签中

<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))
)

请参考这里的类似问题在SO

我找到了答案,这可能对其他人有所帮助。下面是如何在文档中附加函数

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

然后调用read()来重新加载网格。每次调用read()时,附加的函数"getFilters"将被执行。

  grid.dataSource.read();