2013-07-05 53 views
1

Kendo Grid对于“dt”字段具有“日期等于”的默认过滤器。对于“名称”字段,它具有默认筛选器“等于”,但我想将“包含”移动到选项列表的第一位,并将其设置为字符串的默认值。它如何实施?Kendo Grid MVC:字符串字段的默认过滤器设置为“等于”

public class MyClass 
{ 
    public DateTime dt { get; set; } 
    public string name { get; set; } 
} 


@(Html.Kendo() 
     .Grid<MyClass>() 
     .Name("grid") 
     .DataSource(data => 
        data.Ajax() 
         .ServerOperation(false) 
         .Read(read => 
          read.Action("MyAction", "MyController")) 
    ) 
     .Columns(cols => 
      { 
       cols.Bound(x => x.dt).Title("Date").Width(150); 
       cols.Bound(x => x.name).Title("Name").Width(250); 
      }) 
     .Filterable() 
     .Sortable()) 

回答

1

看看Filter menu customization演示。看来你会沿着这些路线做一些事情:

@(Html.Kendo() 
     .Grid<MyClass>() 
     .Name("grid") 
     .DataSource(data => 
        data.Ajax() 
         .ServerOperation(false) 
         .Read(read => 
          read.Action("MyAction", "MyController")) 
    ) 
     .Columns(cols => 
      { 
       cols.Bound(x => x.dt).Title("Date").Width(150); 
       cols.Bound(x => x.name).Title("Name").Width(250); 
      }) 
     .Filterable(filterable => filterable 
      .Extra(false) 
      .Operators(ops => ops 
       .ForString(str => str.Clear() 
        .Contains("Contains") 
        .StartsWith("Starts with") 
        // any other filters you want in there 
        ))) 
     .Sortable()) 

如果我正确地解释它的str.Clear()清除了存在的,所以你会建立自己从那里的过滤器。所以,如果你不认为客户需要或想要.EndsWith过滤器,例如,你不会在这里包括它。

+0

虽然它解决了问题中描述的问题,但它引发了一个新问题,即locale .js文件中指定的本地化将不再应用于各个字符串。 –

0

如果你的源代码开放的剑道解决方案和Kendo.Mvc/UI/Grid/Settings

下找到 类名StringOperatorsOperators = new Dictionary<string, string>() 变化的顺序如你所愿,重新生成解决方案,然后在项目中覆盖生成的文件。

相关问题