尝试保留筛选器状态时键入错误-Kendo UI网格
Type Error when trying to preserve filter state - Kendo UI Grid
我正在使用Kendo UI的网格,并试图添加一些代码,通过cookie的方式保留网格的过滤器/分组等。它在示例中起作用,但在我的代码中根本不起作用。
示例:http://www.kendoui.com/code-library/web/grid/preserve-grid-state-in-a-cookie.aspx
我的代码:http://jsfiddle.net/PwajE/
无论出于什么原因(我相信这是一个简单的原因),我总是收到类型错误。两个小时后。。。我来了。
和往常一样,任何帮助都会受到赞赏。
@RRfive
<script>
var data = [{"name":"John Smith","email":"test@test.com","permission":"admin","costRate":"60","dt":"2013-02-02 10:26:29","memberID":"M0000001"},{"name":"Test Simple","email":"test@jones.com","permission":"user","costRate":"40","dt":"2013-02-02 00:00:00","memberID":"M0000002"}];
$(document).ready(function() {
$("#grid").kendoGrid({
dataSource: {
data: data,
//transport: {
// read: "assets/data/data.users.php",
//},
schema: {
data: function(result) {
return result.data || result;
},
total: function(result) {
var data = this.data(result);
return data ? data.length : 0;
},
model:{
id:"memberID",
fields:{
dt:{ type:"date" },
costRate:{ type:"number" }
}
}
},
pageSize: 10,
},
sortable: {
mode: "single",
allowUnsort: true,
},
pageable: {
input: true,
numeric: false
},
reorderable: true,
resizable: true,
filterable: {
extra:false,
operators: {
string:{
contains: "Contains",
}
}
},
columnMenu: false,
groupable: true,
dataBound: function(e){
var grid = this;
var dataSource = this.dataSource;
var state = kendo.stringify({
page: dataSource.page(),
pageSize: dataSource.pageSize(),
sort: dataSource.sort(),
group: dataSource.group(),
filter: dataSource.filter()
});
$.cookie("employeesState",state);
if($.cookie('empRows')){
$.each(JSON.parse($.cookie('empRows')),function(){
var item = dataSource.get(this);
var row = grid.tbody.find('[data-uid='+item.uid+']');
row.addClass('k-state-selected');
})
}
},
change:function(){
var grid = this;
var ids = grid.select().map(function(){
return grid.dataItem($(this)).Id
}).toArray();
$.cookie('empRows',JSON.stringify(ids));
},
columns: [
{ field: "name", title:"Name" },
{ field: "email", title:"Email/Username" },
{ field: "costRate", title:"Cost Rate (p/hr)", template: '#= kendo.toString(costRate, "c") #', },
{ field: "permission", title:"Permission", template: "#= (permission == 'admin') ? 'Administrator' : 'User' #" },
{ field: "dt", title:"Registered", template: '#= kendo.toString(dt,"d-M-yyyy") #' },
{ field: "memberID", title:" ", width: "83px", filterable: false, sortable: false, template: '<a class="k-button k-button-icontext k-grid-edit" href="manage_admin.php?form=editMember&ID=#= kendo.toString(memberID, "n2")#"><span class='"k-icon k-edit'"></span>Edit</a>'},
]
});
var state = JSON.parse($.cookie("employeesState"));
if(state){
if(state.filter){
parseFilterDates(state.filter, grid.dataSource.options.schema.model.fields);
}
grid.dataSource.query(state);
}
else{
grid.dataSource.read();
}
});
function parseFilterDates(filter, fields){
if(filter.filters){
for(var i = 0; i < filter.filters.length; i++){
parseFilterDates(filter.filters[i], fields);
}
}
else{
if(fields[filter.field].type == "date"){
filter.value = kendo.parseDate(filter.value);
}
}
}
</script>
如果调试该fiddle,您会看到以下行抛出错误:
grid.dataSource.query(state);
原因是grid
不是剑道网格的实例,而是具有id='grid'
的div
元素。修复方法很简单-在使用grid
变量之前先初始化它:
var grid = $("#grid").data('kendoGrid');
grid.dataSource.query(state);
相关文章:
- Node.js v6.2.0类扩展不是函数错误
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- document.open/document.write没有正确地清除chrome中的文档——这是chrome的错误吗
- 试图在引导模式内动态生成图表,得到offsetWidth错误
- Kendo:我该如何在树视图中创建一个递归的hieiarchy
- 为什么会出现错误;未捕获的类型错误:undefined不是函数;
- 我如何修复包含在captcha的addthis中的错误
- Typescript Kendo UI网格列类型错误
- 检测Kendo UI值绑定错误
- Kendo ui:未捕获类型错误:无法读取属性'至小写'的未定义
- JavaScript运行时错误:“kendo”未定义
- 如果 kendo 数字文本框中的值增加最大值,则希望显示错误消息
- jquery 在我对 Kendo UI 网格数据进行更改后返回错误
- Kendo NumericTextBox 中存在一个错误,它存在于函数 caret(element, position)
- Kendo UI移动滚动程序错误
- Kendo TabStrip,获取错误-切换选项卡时应为microsoft jscript运行时错误对象
- 剑道网格错误:Kendo .all.min.js:12 Uncaught TypeError: e.s slice不是一
- javaScript运行时错误:'kendo'是未定义的
- 重新加载kendo ui网格行项目代码执行错误
- 尝试保留筛选器状态时键入错误-Kendo UI网格