2013-01-08 17 views

risposta

14

Nel codice, probabilmente avete qualcosa di simile:

<asp:Content ContentPlaceHolderID="MainContent" runat="server"> 
<%: Html.Kendo().Grid(Model) 
    .Name("Grid") 
    .Columns(columns => 
    { 
     columns.Bound(p => p.ProductID).Groupable(false); 
     columns.Bound(p => p.ProductName); 
     columns.Bound(p => p.UnitPrice); 
     columns.Bound(p => p.UnitsInStock); 
    }) 
    .Groupable() 
    .Pageable() 
    .Sortable() 
    .Scrollable() 
    .Filterable() 
    .DataSource(dataSource => dataSource 
     .Ajax() 
     .Read(read => read.Action("Products_Read", "Grid")) 
    ) 
%> 
</asp:Content> 

Se volete ProductID colonna non essendo filtrabile, si dovrebbe dire:

<asp:Content ContentPlaceHolderID="MainContent" runat="server"> 
<%: Html.Kendo().Grid(Model) 
    .Name("Grid") 
    .Columns(columns => 
    { 
     columns.Bound(p => p.ProductID).Groupable(false).Filterable(false); 
     columns.Bound(p => p.ProductName); 
     columns.Bound(p => p.UnitPrice); 
     columns.Bound(p => p.UnitsInStock); 
    }) 
    .Groupable() 
    .Pageable() 
    .Sortable() 
    .Scrollable() 
    .Filterable() 
    .DataSource(dataSource => dataSource 
     .Ajax() 
     .Read(read => read.Action("Products_Read", "Grid")) 
    ) 
%> 
</asp:Content> 
1

Per quello che posso dire, dovresti essere in grado di impostare la proprietà di configurazione columns.filterable su "false" per quelle colonne che non vuoi filtrate, poiché è impostata su "true" (vedi Documenti: columns.filterable)

Se è possibile eseguire questa operazione dal lato C# dipende da come Kendo Grid viene inizializzato nel codice.

+0

penso che columns.filterable applica a tutte le colonne. Non c'è un modo per impostare le singole colonne che posso trovare. –

+1

Per specificare per colonna è necessario fornire una voce nell'array 'columns' con l'attributo filterable impostato su false. Anche in questo caso, ciò potrebbe non essere possibile a seconda di come è impostato il codice per creare la griglia –

0

io non ne ha parlato nella questione , ma stavo usando la funzione AutoGenerate() della griglia, quindi non è possibile accedere facilmente all'impostazione Filtrabile.

Una soluzione per questo caso è:

var gb = Html.Kendo().Grid(data).Name("test"); 
gb.Columns(columns => { columns.AutoGenerate(true); }); 

// !!! Hide filter for first column in grid. 
gb.Columns((columns) => { (columns.Container.Columns[0] as IGridBoundColumn).Filterable=false; }); 

gb.Filterable(filtering => filtering.Enabled(true)); 

gb.DataSource(ds => ds 
       .Ajax() 
       .ServerOperation(true) 
       .Model(model => model.Id("A")) 
       ); 
gb.Render(); 
3

Se non si sta configurando le colonne, è possibile nascondere i pulsanti di filtro dopo la griglia viene inizializzato, come ad esempio nel caso in databound. Ecco un modo, nascondendo il pulsante del filtro su un campo specifico:

$("#MyGrid").find(".k-header[data-field='Pct_positive']").find(".k-grid-filter").css("visibility","hidden"); 

Per nascondere tutti ...

$("#MyGrid").find(".k-header").find(".k-grid-filter").css("visibility","hidden"); 
0

per il lato client (jQuery) kendo griglia si può mettere filtrabile: false, per la singola colonna dopo averla filtrata: true, per l'intera griglia.

es.

campo: "Margin01", Larghezza: 40, filtrabile: false, titolo: "0-"

Problemi correlati