我有一个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?
})
答案 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();