3 Stimmen

jQuery Grid mit Autovervollständigung

Ich baue eine Webapp mit jQuery und jQuery UI. Ich bin in einer Sackgasse. Was ich brauche, ist ein jQuery-Gitter, das bearbeitbare Felder hat und irgendwie ein Autocomplete-Feld auf einer dieser bearbeitbaren Zellen zu integrieren und ich kippe scheinen alle Gitter-Angebote zu finden, die dies implementieren.

Ich habe mir die StickGrid y jgGrid

Besonders gut gefällt mir jqGrid, da es Themeroller-ready ist. Weiß jemand, wenn jemand erfolgreich in der Lage gewesen, eine Autovervollständigung auf einem dieser Raster, oder jede andere Jquery-Raster für diese Angelegenheit zu integrieren?

4voto

jitter Punkte 52721

Ich denke, dass das, was Sie wollen, ziemlich leicht zu erreichen sein sollte. Ich habe Ihnen eine schnelle Copy-Paste / Steal-together Demopage.

Wenn Sie auf die Spalte Datum klicken, erhalten Sie eine Kalenderauswahl.

Wenn Sie auf die Spalte Kunde klicken und den Inhalt löschen, sehen Sie einen Autocompleter (css passt nicht zu quickpastewhatever), der amerikanische Städte auflistet (ich weiß, dass Städte keine Kundennamen sind, das war nur ein Beispiel).

Code entnommen aus jqGrid Cell Editing Demo-Seite + jQuery Autocomplete Demo-Seite

http://jsbin.com/owatu (anhängen /edit zur Url, um den Code zu sehen)

Natürlich ist die Demo noch ein wenig unfertig

  • css-Probleme
  • schneller Hack in afterSaveCell eingefügt, um jQgrid dazu zu bringen, den ausgewählten Wert aus dem Autocompleter einzufügen, wenn der Benutzer Pfeiltasten+Eingabetaste mit der Maus benutzt, funktioniert es ohne Hack

Ich denke, der afterSaveCell-Hack könnte entfernt werden, wenn Autocomplete und jqGrid sauber miteinander integriert werden.

Im Grunde genommen läuft es auf Folgendes hinaus

jQuery("#celltbl").jqGrid({
    ...
    {name:'name', width:100, editable:true}, //e.g.
    ...
    afterEditCell: function (id,name,val,iRow,iCol) {
        if(name=='name') {
            //cities here is local json object
            jQuery("#"+iRow+"_name","#celltbl").autocomplete(cities);
        }
    },
    afterSaveCell : function(rowid,name,val,iRow,iCol) {
        if(name == 'name') {
            jQuery("#celltbl").jqGrid('setRowData',rowid,{name:jQuery(".ac_over").text()});
            jQuery(".ac_results").remove();
        }
    }
    ...

0voto

Sergey Punkte 3124

Ich habe nicht implementiert autocomplete, aber ich habe mit jqGrid gearbeitet und es hat eine großartige Unterstützung für Javascript-Ereignisse.

Zum Beispiel: Wenn Sie eine ID in eine der Zellen eingeben und die Informationen in anderen Zellen automatisch ausfüllen möchten, können Sie Folgendes verwenden afterEditCell verwenden, wo Sie eine benutzerdefinierte Funktion angeben, die rowid, cellname, value, iRow, iCol erhält und prüft, ob die iRow die gleiche Zeile wie Ihre ID ist, diesen Wert nimmt und andere Zellen basierend auf diesem Wert auffüllt. - grundsätzlich automatisch vervollständigen

Sie können auch das Ereignis beforeEditCell verwenden und Ihre eigene Funktion erstellen, die rowid, cellname, value, iRow, iCol erhält und das Ergebnis in die Zelle zurückgibt.

siehe Abschnitt Veranstaltungen http://www.trirand.com/jqgridwiki/doku.php?id=wiki:cell_editing

Viel Glück!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X