基于条件的页面大小和Kendo Grid的过滤器

时间:2014-08-05 10:39:36

标签: jquery razor kendo-ui kendo-grid

您好有办法控制我的Kendo Grid的过滤器和页面大小选项吗?

例如:我是一个带有一些过滤器和页面大小的剑道网格。现在我想删除所选列的一些过滤器。页面大小也基于登录(或某些条件)。

有没有办法解决这个问题?从控制器或我看来?

由于

1 个答案:

答案 0 :(得分:1)

不是动态更改过滤器,而是因为在您的情况下您只需要根据登录信息进行更改,因此想法是创建具有正确值的网格。即,从服务器发出代码,但使用filterablepageSize的值作为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() {
    ...
});

用于读取登录用户并设置pageSizefilterable或用户特定值的默认值的代码:

var user = $("#user").val();
// Default value
var filterable = false;
var pagesize = 5;
// Specific value
if (user == "OnaBai") {
    pagesize = 20;
    filterable = true;
}

现在,继续初始化DataSourceGrid。我们将使用filterablepageSize 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/