2013-07-05 84 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>() 變化的順序如你所願,重新生成解決方案,然後在項目中覆蓋生成的文件。

相關問題