简体   繁体   English

剑道网格过滤器运算符

[英]kendo grid filter operator

I have a datasource I use for a grid. 我有一个用于网格的数据源。 The grid has server filtering, which works fine. 网格具有服务器过滤功能,效果很好。 The issue is-Filter is giving the results based on contains operator only(irrespective of what I have selected) how to get the filter operator from filter operator options. 问题是-过滤器仅基于包含运算符(无论我选择了什么)给出结果,如何从过滤器运算符选项中获取过滤器运算符。

Please help me 请帮我

@(Html.Kendo().Grid(Model).Name("ViewDataGrid") @(Html.Kendo()。Grid(Model).Name(“ ViewDataGrid”)

    .Columns(columns =>
    {
        columns.Bound(c => c.Id).Title(" ID").Width(150);
        columns.Bound(c => c.Name).Title(" Name").Width(150);

        })
    .HtmlAttributes(new { style = "height: auto; width: 2200px" })
    .Filterable(i => i.Mode(GridFilterMode.Menu | GridFilterMode.Row))
    .Sortable(s => s.AllowUnsort(false).SortMode(GridSortMode.MultipleColumn))
    .Selectable(selecting => selecting.Enabled(true))                               
    .Pageable(r => r.PreviousNext(true).PageSizes(new int[] { 10, 20, 30, 40, 50, 100 }))
    .DataSource(dataSource => dataSource
        .Ajax()
        .PageSize(20)
        .ServerOperation(false)
        .Events(e => e.Change("call"))
        ))
function call(e) {

    if (e.sender.filter.arguments[0].filters != null) {
        if (e.sender.filter.arguments[0].filters[0].value == "") {                     
            $('#ViewDataGrid').data('kendoGrid').dataSource.filter({});
        }
        else {
            var filterlength = e.sender.filter.arguments[0].filters.length;
            $filter = new Array();
            if (e.sender.filter.arguments[0].filters[0].field == "Id")
            $filter.push({ field: e.sender.filter.arguments[0].filters[0].field, operator: "eq", value: e.sender.filter.arguments[0].filters[0].value });
            else
            $filter.push({ field: e.sender.filter.arguments[0].filters[0].field, operator: "contains", value: e.sender.filter.arguments[0].filters[0].value });
            $("#ViewDataGrid").data("kendoGrid").dataSource.filter($filter);

        }
    }
}

Model.CS 型号

public int Id { get; set; }
public string Name { get; set; }

Controller 控制者

public ActionResult Index()
{
    List<GridData> dataList = new List<GridData>(); 
    GridData data1 = new GridData();
    data1.Id = 9191919;
    data1.Name = "XYZ";           
    dataList.Add(data1);
    return View(dataList);           
}

you might enable only the 'Is equal to' filter for the ID field 您可以仅对ID字段启用“等于”过滤器

@(Html.Kendo().Grid(Model).Name("ViewDataGrid")

    .Columns(columns =>
    {
            columns.Bound(c => c.Id).Title(" ID").Width(150).Filterable(f => f.Operators(op => op.ForNumber(opn => opn.Clear().IsEqualTo("Is equal to") )));
            columns.Bound(c => c.Name).Title(" Name").Width(150);
        })
    .HtmlAttributes(new { style = "height: auto; width: 300px" })
    .Filterable(i => i.Mode(GridFilterMode.Menu | GridFilterMode.Row))
    .Sortable(s => s.AllowUnsort(false).SortMode(GridSortMode.MultipleColumn))
    .Selectable(selecting => selecting.Enabled(true))
    .Pageable(r => r.PreviousNext(true).PageSizes(new int[] { 10, 20, 30, 40, 50, 100 }))
    .DataSource(dataSource => dataSource
        .Ajax()
        .PageSize(20)
        .ServerOperation(false)
    ))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM