jqGrid und Vorauswahl von Zeilen mit multiselect-option
Habe ich ein jqGrid mit multiselect.
Ich möchte in der Lage sein, zu pre-check eine bestimmte Anzahl von Zeilen wenn eine andere Spalte wahr ist, zum Beispiel.
Was ich bisher gemacht habe ist vorbei ein element (Spalte) von dem server, der enthält einen booleschen Wert.
Ich ausblenden dieser Spalte in der gridComplete Veranstaltung.
Ich kann ich wählen und überprüfen Sie eine vordefinierte Zeile beim laden der raster?
UPDATE:
Dies ist mein code:
jQuery("#OrdersGrid").jqGrid({
url: $.SalesOrders.url.OrdersFetchUrl,
postData: { OrderStatus: orderStatus },
datatype: 'json',
mtype: 'POST',
colNames: ['N.Ordine', 'Cliente', 'Ragione Sociale', 'Stato', 'Fido', 'Data', ''],
colModel: [
{ name: 'Number', index: 'Number', editable: false, resizable: true, sortable: false, width: 76, align: 'left' },
{ name: 'CustomerCode', index: 'CustomerCode', editable: false, resizable: true, sortable: false, width: 50, align: 'left' },
{ name: 'CustomerName', index: 'CustomerName', editable: false, resizable: true, sortable: false, width: 410, align: 'left' },
{ name: 'Status', index: 'Status', editable: false, resizable: true, sortable: false, width: 40, align: 'center' },
{ name: 'LoCStatus', index: 'LoCStatus', editable: false, resizable: true, sortable: false, width: 40, align: 'center' },
{ name: 'Date', index: 'Date', editable: false, resizable: true, sortable: false, width: 70, align: 'right' },
{ name: 'Checked', index: 'Checked', editable: false, resizable: false, visible: false }
],
pager: $('#OrdersPager'),
rowNum: 30,
width: 794,
height: 220,
viewrecords: true,
shrinkToFit: false,
scroll: true,
rownumbers: true,
hidegrid: false,
multiselect: true,
emptyrecords: "Nessun record presente",
loadComplete: function (data) {
if (data.rows.length > 0) {
for (var i = 0; i < data.rows.length; i++) {
if (data.rows[i].cell[6] == 'true') {
jQuery("#OrdersGrid").jqGrid('setSelection', data.rows[i].id, true);
}
}
}
jQuery("#OrdersGrid").jqGrid('hideCol', 'Checked');
}
});
Habe ich umgesetzt Oleg Lösung und es funktioniert wie ein Charme.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du nicht geschrieben die definition des Rasters, die Sie verwenden, so dass einige Fragen für mich bleiben geöffnet. Dennoch hoffe ich, dass Sie finden die Antwort auf Ihre Frage hier. In die demo enthalten in der Antwort verwendet werden, die parameter
loadonce:true
das macht alles komplizierter. Die Zeilen, die markiert werden, sind nicht auf die erste Seite der geladenen Daten. Außerdem in der demo-es gibt keine Spalten (sogar die verborgenen), die verwendet werden können, um zu bestimmen, welche Zeilen ausgewählt werden sollte. Statt, dass die Informationen über die Auswahl im Netz gesendet werden vom server als Teil vonuserdata
Teil der JSON-Antwort. Dieser Weg ist eher allgemein und ich hoffe, es wird auch in dein raster.AKTUALISIERT: ich finde deinen code gut. Ich habe gesehen, dass nur kleine stellen, die für die Optimierung:
editable: false
,resizable: true
undalign: 'left'
sind Standard in dercolModel
(siehe jqGrid Dokumentation). Daher schlage ich vor, um die Werte zu entfernen.visible: false
existieren nicht in dercolModel
. Du meinst wahrscheinlichhidden: true
. Nach der Verwendung der richtigen Eigenschaft der AussagejQuery("#OrdersGrid").jqGrid('hideCol', 'Checked');
wird nicht benötigtloadComplete
.jQuery("#OrdersGrid")
jedes mal in der Schleife können Sie speichern den Wert in eine variable:var mygrid = jQuery("#OrdersGrid");
vor jqGrid Initialisierung und dann wird sich der codemygrid.jqGrid({...,loadComplete: function (data) {...mygrid.jqGrid('setSelection', ...
Einige zusätzliche Bemerkungen. Die Aussage
data.rows[i].cell[6] = 'true'
zeigt, dass Sie serialisierenChecked
Eigenschaft mitChecked.ToString()
. Sie könnenChecked?"1":"0"
statt und verringern Sie die Größe der Daten übertragen. Ich benutze viele Netze mit denformatter:"checkbox"
interpretieren die beide "1" und "true" wie überprüft. In Ihrem Fall sind Sie absolut frei in das format der Daten, so dass Sie können verwenden Sie "1" und "0" oder auch "1" und "".Wenn Sie Aktiviert-Spalte nur für die übertragung der Daten über die Zeile können Sie die Auswahl entfernen
Checked
Spalte aus dem grid an alle. In derdata
parameter derloadComplete
Sie werden noch sehen, dieChecked
Eigenschaft (diedata.rows[i].cell[6]
), aber reduzieren Sie die Anzahl der Spalten.