2016-08-05 7 views
0

Ich versuche, ein Raster mit einer Spalte des Typs zu erstellen, mit dynamischen Optionen. Die Optionen werden ausgefüllt, nachdem das Bearbeitungsformular angezeigt wird.Wert von Dyanamic auswählen in jqGrid nicht eingereicht

Meine Idee war es, das dataInit Ereignis zu verwenden, wie in this Antwort beschrieben.

Das Modell für die Spalte ist:

{name: 'bad', index: 'bad', editable: true, edittype: 'select', 
    editoptions: { 
    dataInit: function(elem) { 
     setTimeout(function() { 
     $(elem).empty() 
      .append("<option value='1'>Option 1</option>") 
      .append("<option value='2'>Option 2</option>"); 

     }, 50); 
    } 
    } 

Die Optionen werden in Form korrekt aufgefüllt, aber bei der Einreichung wird der Wert des Auswahlfeldes nicht an den Controller gesendet.

beforeSubmit: function(data, id) { 
    alert(JSON.stringify(data)); 
    // Alerts:  {"":"1","list_id":"_empty"} 
    // Notice that "" should be "bad" 
} 

Testen Sie es selbst: Ich habe das beforeSubmit Ereignis verwendet, um das data Objekt anzuzeigen gesendet werden http://fiddle.jshell.net/6zaHp/137/

+0

** Welche Version von jqGrid Sie verwenden und von der Gabel von jqGrid ([freie jqGrid] (https://github.com/free-jqgrid/jqGrid), kommerziell [Guriddo jqGrid JS] (http://guriddo.net/?page_id=103334) oder ein altes jqGrid in einer Version <= 4.7)? ** Wo setzt man die Option "editable: true"? Ich sehe nicht, wo Sie eine Option von 'address'' ' und der Benutzer wählt die Adresse manuell –

+0

Entschuldigung, ich entwickle freie jqGrid und kann Ihnen nicht mit bestimmten Guriddo Probleme helfen. Sie können die Support-Anfrage an [Guriddo Forum] (http://guriddo.net/?page_id=4) senden. Alternativ können Sie versuchen, zu überprüfen, ob das gleiche Problem auch in freiem jqGrid existiert. Sie müssen lediglich URLs in 'ui.jqgrid.css',' grid.locale-en.js' und 'jquery.jqgrid.src.js' ändern, wie es in [dem Wiki-Artikel] (https://github.com) beschrieben ist/free-jqgrid/jqGrid/wiki/Access-freie-jqGrid-from-different-CDNs). Wenn das gleiche Problem im freien jqGrid existiert, dann könnte ich versuchen, Ihnen zu helfen. Wenn nicht, dann sollte es wahrscheinlich ein Fehler in Guriddo JS sein. – Oleg

Antwort

1

würde ich Ihnen empfehlen value: {} für die Auswahl zu verwenden, die dynamisch aufbauen wird.

{name: 'bad', editable: true, edittype: 'select', 
    editoptions: { 
    value: {}, // <-- Added this line 
    dataInit: function(elem) { 
     setTimeout(function() { 
     $(elem).empty() 
       .append("<option value='1'>Option 1</option>") 
       .append("<option value='2'>Option 2</option>"); 
     }, 50); 
    } 
} 

Ohne die Einstellung jqGrid nicht einige erforderlichen Attribute wie das name Attribut auf den <select> gesetzt. Das Attribut name wird zum Erstellen des Eigenschaftsnamens der resultierenden JSON-Daten verwendet, die an den Server gesendet werden.

finden Sie in der entsprechenden Demo hier aktualisiert: http://fiddle.jshell.net/6zaHp/139/

Verwandte Themen