2016-05-10 6 views
0
$.(document).ready(function() { 
    $.ajax({ 
     url: 'xx_op.php', 
     ...success: function(result) { 
      result = JSON.parse(result); 
      var colNames = result.columnNames; 
      var colModel = result.colModel; 
      $.("list").jqGrid({ 
       colNames: colNames, 
       colModel: colModel, 
       cellEdit: true, 
       cellsubmit: 'clientArray', 
       afterSaveCell: function(rowid, cellname, value, iRow, iCol) { 
        var y = $("group_list").getChangedCells('dirty'); 
        var t = JSON.stringify(y); 
        $.ajax({ 
         .... 
        }); 
       } 
      }); 
     } 
    }); 
}); 

können Sie meine Bedeutungen verstehen? Ich möchte Celledit auf DropDown und MultiSelect setzen, also wie kann ich Code schreiben? Das sind Renderings, die ich endlich erreichen möchte. Und jeder COLNAMES sind wie Bild und Werte unterscheiden sich von COLNAMES zu anderen COLNAMESkann celledit zu Dropdown und Multiselect mit jqgrid machen?

enter image description here

Antwort

0

Sie benötigen die EditType und EditOptions für Ihre Spalte zu definieren, die Sie mit mehreren Auswahlmöglichkeiten sein möchten.

Here ist auch hilfreich, Link auf multiselects

Hier ist ein soltion ich für Sie in jsfiddle erstellt

var mydata = [ 
        {id: "10", Name: "dog",  Singleselect: "1", Multiselect: [1]}, 
        {id: "20", Name: "cat", Singleselect: "1", Multiselect: [2]}, 
        {id: "30", Name: "fish", Singleselect: "2", Multiselect: [3, 4]}, 
        {id: "40", Name: "elephant",  Singleselect: "2", Multiselect: [4]} 
       ], 
       lastSel; 
      $("#list").jqGrid({ 
       data: mydata, 
       cellEdit:true, 
       datatype: "local", 
       cellsubmit: 'clientArray', 
       colModel: [ 
        { name: "Name", width: 130 }, 
        { name: "Singleselect", width: 100, formatter: "select", edittype: "select", 
         editoptions: { 
          value: {"1": "sport", "2": "science"}, 
          size: 2 
         } 
        }, 
        { name: "Multiselect", width: 250, 
         formatter: "select", 
         edittype: "custom", 
         editoptions: { 
          value: {"1": "Swim", "2": "Eat 1", "3": "drink", "4": "bark"}, 
          custom_element: function (value, options) { 
           return $.jgrid.createEl.call(this, "select", 
            $.extend(true, {}, options, {custom_element: null, custom_value: null}), 
            value); 
          }, 
          custom_value: function ($elem, operation, value) { 
           if (operation === "get") { 
            return $elem.val(); 
           } 
          }, 
          multiple: true 
         } 
        } 
       ], 
       cmTemplate: { editable: true }, 
       gridview: true, 
       sortname: "Name", 
       sortorder: "desc", 
       viewrecords: true, 
       rownumbers: true, 
       pager: "#pager", 
       height: "100%", 
       editurl: "clientArray", 

       caption: "Multi select options" 
      }); 
+0

Ihr Beispiel funktioniert, aber es ist nicht mine.Mine colmodel Ande colname sind von getdata_op.php, also muss ich sie in PHP-Datei setzen, wählen Sie Optionen ist Datenbank, es kann auch sagen, dass alle Daten in der Datenbank erhalten werden. Und ich weiß nicht, ob Sie meine Gedanken verstehen können.In einem Wort, danke – user6270474

+0

Ich habe meine Renderings hochladen und hoffe, dass Sie mir helfen – user6270474

0

In Ihrer PHP dieses Add in, wo immer Sie das Spaltenmodell creatign auch sehen, die Lösung in Here that Oleg created, das ein ähnliches mit Ihnen ist

editoptions: 
    { 
     'custom_element': multiselectcallback, 
     'custom_value': multiselectvalue, 
     multiple: true 
    } 

Dann

function multiselectcallback(value, options) { 
    //get dropdown values using ajax and load them on success 
    $.get("xx_op.php/getdropdownlistdata", function(result) { 
    return $.jgrid.createEl.call(this, "select", $.extend(true, {}, options, {custom_element: null, custom_value: null}), result);         
} 

Funktion multiselectvalue diejenigen JavaScript

setzen (Elem, op, v) {

if (operation === "get") 
{ 
    return $elem.val(); 
} 
+0

Ich versuche Ihr Beispiel, aber das Ergebnis ist dynamisch, es wird von colnames gewählt, wie ich th entwerfen sollte e getdropdownlistdata Funktion? – user6270474

+0

Was meinst du damit bitte klar? –

+0

getdropdownlistdata ist Ihre serverseitige Methode und gestaltet sie so, dass sie den Schlüssel der Dropdown-Liste Schlüssel: Wert erneut generiert. –

Verwandte Themen