webentwicklung-frage-antwort-db.com.de

Wie zeige ich alle Zeilen im jqGrid?

jqGrid macht eine Eigenschaft rowNum verfügbar, in der Sie die Anzahl der Zeilen festlegen können, die für jede Seite angezeigt werden sollen. Wie stellen Sie das Raster so ein, dass es ALLE Zeilen anzeigt?

Im Moment setze ich gerade rowNum auf etwas sehr Hoches wie <%= int.MaxValue %>, aber ich frage mich, ob es einen besseren Weg gibt.

47
Jon Erickson

In der neuesten Version von jqGrid können Sie rowNum auf -1 setzen, um das Raster anzuweisen, immer alle Zeilen anzuzeigen:

rowNum: -1

Sehen Sie die neueste jqGrid-Dokumentation hier

Speziell:

Legt fest, wie viele Datensätze im Raster angezeigt werden sollen. Dieser Parameter wird zur Verwendung durch die Serverroutine an die URL übergeben, die die Daten abruft. Wenn Sie diesen Parameter auf 10 setzen (d. H. 10 Datensätze abrufen) und Ihr Server 15 zurückgibt, werden nur 10 Datensätze geladen. Setzen Sie diesen Parameter auf -1 (unbegrenzt), um diese Überprüfung zu deaktivieren . </ strike>


Aktualisieren

Leider wurde dieses Verhalten in jqGrid 3.6.3 unterbrochen. Laut diesem Beitrag von Tony :

Ja, das stimmt. Grund ist die neu eingeführte Schriftrolle: 1. In Zukunft werden wir dieses Verhalten korrigieren.

Die jqGrid-Entwickler sind sich des Problems bewusst und planen, das Problem in einer zukünftigen Version zu beheben. Leider war dieser Beitrag vor über einem Jahr ...

Zu diesem Zeitpunkt kann ich nur empfehlen, dass Sie rowNum auf eine sehr große Zahl setzen, um das Verhalten von -1 zu simulieren.


Sie können auch die Lösung von whatispunk ausprobieren, indem Sie rowNum: '' verwenden. Ich habe dies jedoch in einem Raster mit lokalen Daten (loadonce: true) versucht. Beim Versuch, die Zeilen zu sortieren, würden alle lokalen Daten des Gitters verschwinden. Diese Lösung scheint also nicht für Netze mit lokalen Daten zu funktionieren, es sei denn, dieser Fehler wurde in einer späteren Version von jqGrid behoben (ich habe ihn mit jqGrid 3.8.2 getestet). Wenn Sie ein Feedback haben, schreiben Sie bitte einen Kommentar!


Update - 16. April 2014

Laut dem jqGrid-Team dies ist jetzt behoben:

Ich habe Unterstützung hinzugefügt, um verschiedene Anzeigewerte für die Pager-Auswahlbox festzulegen, einschließlich -1 für alle.

Ich hatte jedoch keine Gelegenheit, den Fix zu testen. Vermutlich wird diese Änderung in der nächsten Version nach jqGrid 4.6.0 vorgenommen.

53
Justin Ethier

jqgrid (3.5 ohnehin) scheint keine elegante Methode dafür zu haben. Das Beste, was ich bisher gefunden habe, ist, den Rasteroptionen so etwas wie das Folgende hinzuzufügen:

rowList:[10,20,30,100000000],
loadComplete: function() {
    $("option[value=100000000]").text('All');
},

Wenn der Wert 100000000 beliebig höher ist als die maximale Anzahl von Zeilen, werden Sie jemals zurückgegeben, und die Option [value =] ist so, dass Ihre Benutzeroberfläche etwas schöner aussieht. Jenky, arbeitet aber für mich.

8
C Dolan

wenn Sie überhaupt kein Paging verwenden möchten, ändern Sie den serverseitigen Code, um alle Zeilen zurückzugeben. Verwenden Sie den Zeilenparameter überhaupt nicht.

wenn Sie die Zeilenliste haben möchten, aber auch eine Option zum Anzeigen aller haben möchten, tun Sie dies in den Gittereigenschaften

jQuery("#statement_mods").jqGrid({
  rowList:['ALL',30,50,100,200]
});

stellen Sie im serverseitigen Code sicher, dass Sie den Zeilenparameter ignorieren, wenn GET ['rows'] = 'ALL'

4
Yashvit

Das funktioniert:

// Step1 - defines the rows
jqGridOptions.rowList =[10, 50, 100, 500, 'All'];
...
...
// Step2 - Change the 'All' to a meaningful value 
loadComplete: function (data) {
   $(".ui-pg-selbox option[value='All']").val(1000);
}
3

einstellung rowNum:-1 hat den Trick für mich gemacht

2
Salty

Wenn Sie die Paginierung in der Navigationsleiste festgelegt haben, können Sie auch auf die Gesamtzahl der Zeilen rechts unten im Raster zugreifen und diese an die generierte RowList-Option anhängen.

Tun Sie etwas wie:

    // Get the total number of rows and delete space between numbers (Split the content of the div depending of the language (for me french)

var val=jQuery("#pager_right div").text().split('sur')[jQuery("#pager_right div").text().split('sur').length-1].split(' ').join('');

    // And do the appending if the option isn't already added

if(!$(".ui-pg-selbox option[value='"+val+"']").length > 0)
    jQuery(".ui-pg-selbox").append($('<option></option>').val(val).html(val));
2
JULIEN

Ich habe das funktioniert:

$('#bla').jqGrid({
        ...
        'rowNum'      : 0,
        'loadOnce'    : true,
        'loadComplete': function(data) {
            $(this).jqGrid('setGridParam', 'rowNum', data.total);
        },
        ...
});

Dies funktioniert mit und ohne loadOnce-Option auf true. Beachten Sie, dass Sie zuerst die Option rowNum auf 0 setzen müssen. Wenn Sie diese Option auslassen, werden standardmäßig immer noch die 20 Datensätze angezeigt, die angezeigt werden sollen .. _. Außerdem gehe ich davon aus, dass Sie die gesamten Zeilen vom Server zurückgeben im dokumentierten JSON-Reader-Format.

1
lotjuh
Jqgrid.PagerSettings.PageSize = Max Row you want to display;
Jqgrid.ToolBarSettings.ToolBarPosition = ToolBarPosition.Hidden;
1
Ankur

mit einfacher Änderung behoben: rowNum: inputDataArray.length

dabei ist inputDataArray das Array, das ich dem Grid zur Verfügung stelle.

1
Nilesh Shukla

Sie können auch in jquery.jqGrid.js gehen und "rowNum: 20" in "rowNum: Some-Really-Large-Number" ändern. Geben Sie bei der Definition Ihres jqGrid keine rowNum an. Senden Sie dann Ihr gesamtes Dataset zurück an jqGrid.

0
Ron
loadComplete: function (data) {
                //set our "ALL" select option to the actual number of found records
                $(".ui-pg-selbox option[value='ALL']").val(data.records);
}

Dadurch wird die Option "ALL" in die tatsächliche Anzahl der Datensätze in der Datenmenge geändert.

0
Chris

Auch wenn im Dokument immer noch angezeigt wird, dass Sie rowNum ab jqGrid 4.5.4 nicht auf -1 setzen können, funktioniert es erneut (möglicherweise auch in früheren Versionen).

0
DevAntoine

Standardmäßig werden im JQ-Raster maximal 20 Zeilen angezeigt, wenn Sie keine Paginierung verwenden:

// To over come with this problem ,you can just write the bold    mark
   (rowNum:10000,):
   $("#MasterDataDefinationGrid").jqGrid({
            url: 'FetchData.aspx/GetDataFromDB',
            datatype: 'json',
            mtype: 'POST',
            height: 300,
            autowidth: true,
            serializeGridData: function (postData) {
                return JSON.stringify(postData);
            },
            ajaxGridOptions: { contentType: "application/json" },
            loadonce: true,
            colNames: [Your column names],
            colModel: [Your model],
            formatter: 'actions',
            pager: '#MasterDataDefinationPager', pgbuttons: false,pgtext:false,
            multiselect: false,
            ignoreCase: true,
            **rowNum: 10000,**
            loadtext: 'Loading ...',
            gridview: true,
            hidegrid: false,
            jsonReader: {
                page: function (obj) { return 1; },
                total: function (obj) { return 1; },
                records: function (obj) { return obj.d.length; },
                root: function (obj) { return obj.d; },
                repeatitems: false,
                id: "0"
            },
            caption: 'Data'
        });
0
VCody

Einstellung rowNum: '' Sie erhalten alle Zeilen.

0
mikesigs