2010-11-29 8 views
8

Ich habe ein jQGrid mit einer Spalte, die ich nur beim Hinzufügen einer neuen Zeile bearbeiten möchte.jQGrid, wie man eine Spalte editierbar im Add-Dialog, aber nicht während (Inline) bearbeitet

Ich habe Beispiele dafür gesehen, wie das gemacht wird, wenn Änderungen und Ergänzungen in einem Dialog geschehen, aber gibt es eine Möglichkeit, dies mit der Inline-Bearbeitung zu tun?

Ich habe versucht, mit grid.setColProp() in beforeShowForm :, aber das funktioniert nicht (die Spalte bleibt schreibgeschützt und ist nicht im Dialogfeld hinzufügen).

Beispiel für dialogbasierte Spalte aktivieren/deaktivieren:
http://www.ok-soft-gmbh.com/jqGrid/CustomFormEdit.htm

Antwort

18

Da Sie das Beispiel aus meiner alten Antworten verwenden (this und this) Ich fühle, dass ich auf Ihre Frage auch beantworten sollte.

In der old example haben alle Felder, die während Hinzufügen oder Bearbeiten von Dialogen geändert werden können, die Eigenschaft editable:true. Die Felder, die nur im Dialogfeld "Hinzufügen" angezeigt werden sollen, werden im Ereignishandle beforeShowForm ausgeblendet. In gleicher Weise können wir temporäre Schalter einige Felder zu editable:false vor Aufruf des EditRow Methode und Reset zurück zum editable:true unmittelbar nach dem Aufruf:

onSelectRow: function(id) { 
    if (id && id !== lastSel) { 
     grid.jqGrid('restoreRow',lastSel); 
     var cm = grid.jqGrid('getColProp','Name'); 
     cm.editable = false; 
     grid.jqGrid('editRow', id, true, null, null, 'clientArray'); 
     cm.editable = true; 
     lastSel = id; 
    } 
} 

Sie diesen Live-here sehen können.

UPDATE:Free jqGrid ermöglicht es, editable als Callback-Funktion zu definieren. Siehe the wiki article. Es ermöglicht, die Spalte in einigen Zeilen editierbar zu machen und nicht editierbar für andere Zeilen.

+0

Hervorragend, danke für Ihre Hilfe Oleg! – David

+0

@ user524257: Willkommen! – Oleg

+0

Großartig! Haben Sie irgendwelche Blog-Posts, Publikationen oder einen anderen Stack-Antworten auf jQGrid? –

Verwandte Themen