您好有办法控制我的Kendo Grid的过滤器和页面大小选项吗?
例如:我是一个带有一些过滤器和页面大小的剑道网格。现在我想删除所选列的一些过滤器。页面大小也基于登录(或某些条件)。
有没有办法解决这个问题?从控制器或我看来?
由于
答案 0 :(得分:1)
不是动态更改过滤器,而是因为在您的情况下您只需要根据登录信息进行更改,因此想法是创建具有正确值的网格。即,从服务器发出代码,但使用filterable
和pageSize
的值作为JavaScript变量,该变量在执行时间内获取其值,具体取决于登录的用户。
示例:我定义了一个登录表单,当用户单击Login button
时,它会执行Grid初始化,从那时起它就是空的。
形式:
<div id="container">
<div id="form" class="k-block">
<div class="k-header">Login Form</div>
<div>Login : <input id="user" type="text" data-role="autocomplete"/></div>
<button class="k-button" id="doLogin">Login</button>
</div>
</div>
JavaScript拦截点击doLogin
按钮:
$("#doLogin").click(function() {
...
});
用于读取登录用户并设置pageSize
和filterable
或用户特定值的默认值的代码:
var user = $("#user").val();
// Default value
var filterable = false;
var pagesize = 5;
// Specific value
if (user == "OnaBai") {
pagesize = 20;
filterable = true;
}
现在,继续初始化DataSource
和Grid
。我们将使用filterable
和pageSize
JavaScript变量进行初始化。
// pageSize is variable, the remaining code is the same no matter of the user
var ds = new kendo.data.DataSource({
pageSize: pagesize,
transport: {
...
},
...
};
// Create a DIV element and a Grid on it.
var grid = $("<div id='grid'></div>").kendoGrid({
dataSource: ds,
filterable: filterable,
...
});
// Append Grid element to the correct place of the HTML page
grid.appendTo($("#container"));
请在此处查看正在运行的示例:http://jsfiddle.net/OnaBai/U9LQ4/1/