jqGrid Standardwert nicht funktioniert?
Habe ich ein jqGrid, und eine Spalte einen default-Wert beim hinzufügen einer neuen Zeile. Ich habe die Dokumentation, aber der Wert erscheint nie.
Dies ist die Spalte aus der colModel:
{name: 'Lt', index: 'Lt', width: 25, editable: true, editoptions: {defaultValue: 'N'}}
Und dies ist, wie rufe ich addRowData:
$("#grid").addRowData(-1,
{ Datum: $.datepicker.formatDate("yy-mm-dd", new Date()) }, "first", true)
Soweit ich sehen kann, mache ich es durch das Buch!
Vollständiges raster def:
$("#dagbok_grid").jqGrid({
datatype: 'json',
mtype: 'GET',
colNames: [
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h',
'i',
'j',
'k',
'l',
'm',
'n',
'o',
'p',
'q',
'r',
's'],
colModel: [
{ name: 'a', index: 'a', width: 30, formatter: 'checkbox', edittype: 'checkbox', editable: true },
{ name: 'b', index: 'b', width: 30, formatter: 'checkbox', edittype: 'checkbox', editable: true },
{ name: 'c', index: 'c', width: 70, formatter: 'date', editable: true, editrules: { required: true }, editoptions: { dataInit: function (elem) { $(elem).datepicker(); } } },
{ name: 'd', index: 'd', width: 65, editable: true, formatter: 'date', formatoptions: { srcformat: 'H:i:s', newformat: 'ShortTime' }, editrules: { time: true} },
{ name: 'e', index: 'e', width: 80, edittype: 'select', editable: true, formatter: 'select' },
{ name: 'f', index: 'f', width: 100, editable: true, edittype: 'textarea', editoptions: {rows: '7'} },
{ name: 'g', index: 'g', width: 80, editable: true, edittype: 'textarea', editoptions: { rows: '7'} },
{ name: 'h', index: 'h', width: 80, editable: true, editrules: { maxValue: 50} },
{ name: 'i', index: 'i', width: 120, edittype: 'select', editable: true, formatter: 'select' },
{ name: 'j', index: 'j', width: 200, edittype: 'select', editable: true, formatter: 'select' },
{ name: 'k', index: 'k', width: 70, edittype: 'select', editable: true, formatter: 'select' },
{ name: 'l', index: 'l', width: 70, editable: true, editrules: { maxValue: 10} },
{ name: 'm', index: 'm', width: 25, editable: true, editoptions: { defaultValue: 'N'} },
{ name: 'n', index: 'n', width: 70, editable: true, editrules: { integer: true, maxValue: 999999 }, formatter: formatPosition, unformat: unformatPosition },
{ name: 'o', index: 'o', width: 25, editable: true, editrules: { custom: true, custom_func: chkLongitudTecken} },
{ name: 'p', index: 'p', width: 80, editable: true, editrules: { integer: true, maxValue: 999999 }, formatter: formatPosition, unformat: unformatPosition },
{ name: 'q', index: 'q', width: 80, edittype: 'select', editable: true, formatter: 'select' },
{ name: 'r', index: 'r', width: 100, editable: true, editrules: { maxValue: 50} },
{ name: 's', index: 's', width: 65, edittype: 'select', editable: true, formatter: 'select' },
],
sortname: 'c',
sortorder: 'desc',
shrinkToFit: false,
viewrecords: true,
gridview: true,
onSelectRow: function (id) {
if (id && id !== lastsel) {
jQuery('#dagbok_grid').saveRow(lastsel);
lastsel = id;
}
jQuery('#dagbok_grid').editRow(id, true);
},
height: 400,
editurl: '@Url.Action("SaveGridRow")',
caption: 'my grid'
});
Ich auch später auf hinzufügen, wählen Sie Werte, um einige cols:
$.ajax({
type: 'GET',
url: '@Url.Action("GetGridComboValues")',
async: false,
success: function (data) {
var grid = $("#dagbok_grid");
grid.setColProp("e", { editoptions: { value: data.kallor} });
grid.setColProp("i", { editoptions: { value: data.rubriker} });
grid.setColProp("j", { editoptions: { value: data.verksamheter} });
grid.setColProp("k", { editoptions: { value: data.opPadrag, dataEvents: [{ type: 'change', fn: function (e) {
$.ajax({
type: "GET",
url: '@Url.Action("GetVerksamhetskod")',
data: { "opPadragId": e.currentTarget.value },
dataType: 'json',
success: function (data) {
var selr = jQuery('#dagbok_grid').jqGrid('getGridParam', 'selrow');
jQuery("#dagbok_grid").jqGrid('setCell', selr, "l", data);
}
});
}
}]
}
});
grid.setColProp("q", { editoptions: { value: data.medier} });
grid.setColProp("s", { editoptions: { value: data.regioner} });
}
});
Hinzufügen und löschen von code
$("#toolbarAddButton")
.button()
.click(function () {
$("#dagbok_grid").addRowData(-1, { Datum: $.datepicker.formatDate("yy-mm-dd", new Date()) }, "first", true)
});
$("#toolbarDeleteButton").click(function () {
var radid = $("#dagbok_grid").jqGrid("getGridParam", "selrow");
if (radid != null) {
var su = $("#dagbok_grid").jqGrid("delRowData", radid);
$("#dagbok_grid").jqGrid("delGridRow", radid, { url: '@Url.Action("DeleteGridRow")', reloadaftersubmit: false });
}
})
Save wird ausgeführt, wenn der Benutzer drücken Sie die Eingabe im edit-Modus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zunächst definiert
editoptions: { defaultValue: 'N'}
. Lesen Sie in der Dokumentation der editoptionsWas Sie wollen, ist, dass default-Wert gesetzt werden, während Füllung das raster, Körper und nicht während der Bearbeitung. Für den Zweck existieren
defaulValue
formatter option, aber es wird nur für einige vordefinierte Formatierungen (siehe die Dokumentation).Können Sie lösen das problem entweder durch die Verwendung von custom formatter oder, wenn Sie
addRowData
- Methode direkt, indem Sie explizit den Wert derLt
Spalte.Ich nicht empfehlen die Verwendung von low-level-Methode
addRowData
die ist langsam und wird meist in falscher Weise. Sie verwendet zum Beispiel-1
als die rowid. Wenn Sie ausführen die gleichen Anweisung mehr als einmal haben Sie id-Duplikate, die Fehler und die Folgen können sehr merkwürdige Effekte. Wenn Sie möchten, dass jqGrid Generierung der eindeutigen ids selbst, die Sie verwenden solltenundefined
als die rowid parameter.addRowData
ich brauche mehr Informationen über das raster, das Sie verwenden (JavaScript-code) und Szenario, in der die Zeile muss Hinzugefügt werden. Meistdata
Parameter ist der beste Weg, im Falle der Nutzungdatatype: 'local'
. Wie ich schrieb in meiner Antwort, die ich nicht verstehe, das problem der Einstellung default-Wert, wenn Sie anrufenaddRowData
ausdrücklich. Warum Sie nicht nurLt: 'N'
zu der Liste der Eigenschaften der Zeile HinzugefügtaddRowData
?addRowData
. Sie könnenaddRowParams: {oneditfunc: function() {/*you code here*/}}
einige Aktionen nach der Initialisierung die leere Zeile wird Hinzugefügt und die inline-Bearbeitung der neuen Zeile begonnen werden. Innerhalb vononeditfunc
Sie können eine beliebige Initialisierung arbeiten. Für einfachste Initialisierung Aktionen, die Sie verwenden könnendataInit
:editoptions: {dataInit: function(elem) {/*your code here*/}}
.