2013-02-12 11 views
6

Ho una griglia UI di kendo con molte colonne. Le colonne che escono possono essere visualizzate scorrendo orizzontalmente. Tuttavia, se siCome posso mostrare la barra di scorrimento orizzontale su una griglia di kendo ui dopo il filtraggio?

1) scorre fino a una colonna non visualizzata inizialmente e

2) filtrata su quella colonna tale che nessuna riga corrispondono ai criteri di filtro

la griglia non consentire lo scorrimento orizzontale . La colonna con il filtro applicato non può essere cancellata.

Come è possibile visualizzare la barra di scorrimento orizzontale dopo tale filtraggio?

Ecco un jsfiddle dove si può vedere il problema

http://jsfiddle.net/9sxkG/1/

Ecco il codice:

var dataItem = {}; 
var columns = []; 

for (var i = 0; i < 20; i++) { 
    dataItem['col' + i] = i; 
    columns.push({ 
     field: 'col' + i, 
     width: 80, 
     filterable: true, 
     type: 'number' 
    }); 
} 

$("#grid").kendoGrid({ 
    scrollable:true, 
    columns: columns, 
    filterable: true, 
    dataSource: [dataItem] 
}); 

Per esempio, andare a colonna 18 e filtro pari a 20 per vedere il problema .

risposta

1

Delima interessante. Penso che la tua risposta più semplice sia quella di aggiungere un pulsante accanto alla griglia per "aggiornare" la griglia. Il seguente javascript causerà l'aggiornamento.

function LoadAllPositions() { 
    $("#grid").data("kendoGrid").dataSource.read(); 
} 
+0

Grazie per la risposta. Ho provato ad aggiornare il mio jsfiddle con la tua idea e la barra di scorrimento orizzontale non sembra riapparire. Quindi, colonna x attraverso la colonna n (dove x è l'ultima colonna visibile sul display quando completamente scrollato a sinistra en (è l'ultima colonna della griglia) non sono ancora accessibili per cancellare il filtro o stai suggerendo di ricaricare l'originale dati? Se il primo, potresti aggiornare/fork il violino per dimostrare che funziona? Se quest'ultimo, quindi penso che l'esperienza dell'utente sarebbe piuttosto scarsa per richiedere loro di intraprendere questa azione. – James

+2

Ma suppongo che sia minore di due mali – James

+0

@OnaBai, molto bello. –

2

Sulla base di Trey approccio Gramman di aggiunta di un pulsante filtro trasparente:

$("#grid").kendoGrid({ 
    scrollable: true, 
    columns : columns, 
    filterable: true, 
    toolbar : [ 
     { 
      name  : "clean_filter", 
      imageClass: "k-icon k-i-funnel-clear", 
      text  : "clean filter" 
     } 
    ], 
    dataSource: [dataItem] 
}); 

$(".k-grid-clean_filter", "#grid").on("click", function (e) { 
    $("#grid").data("kendoGrid").dataSource.filter({}); 
}); 

vedere in esecuzione here.

Non risolve la domanda di intestazioni a scorrimento, ma almeno consente di continuare (se non si trova nulla di meglio).

2

Ho avuto lo stesso problema, l'ho risolto aggiungendo una riga vuota alla griglia.
Codice:

var dataItem = {}; 
var columns = []; 

for (var i = 0; i < 20; i++) { 
    dataItem['col' + i] = i; 
    columns.push({ 
    field: 'col' + i, 
    width: 80, 
     filterable: true, 
     type: 'number' 
    }); 
} 

$("#grid").kendoGrid({ 
    scrollable:true, 
    columns: columns, 
    filterable: true, 
    dataSource: [dataItem], 
    dataBound: function(e) { 
     if(this.dataSource.view().length == 0) { 
      var colspan = this.content.find("table col").length; 
      this.content.find("table").append("<tr><td colspan=" + colspan + "></td></tr>"); 
     } 
     $("#grid").find(".k-grid-footer-wrap").scrollLeft($("#grid").find(".k-grid-content").scrollLeft());   
     this.content.bind('scroll', function() { 
      $("#grid").find(".k-grid-footer-wrap").scrollLeft(this.scrollLeft); 
     }); 
    } 
}) 
Problemi correlati