zum Bearbeiten einer Zeile mit editGridRow Funktion von Jqgrid, es ist nicht bearbeitet nur Daten, sondern auch änderungen, die nicht bearbeitet werden, wird die Spalte id den Wert zu selrowid

Erstelle ich ein jqgrid wird bevölkert von Daten aus einer jsp. Es hat 3 Spalten Name, Beschreibung und eine nicht Bearbeitbare Spalte Id. Ich habe 5 Schaltflächen : Neu, Ändern, Löschen, Ok und Abbrechen auf der Seite.Ich möchte zulassen, dass die Benutzer zum Bearbeiten/hinzufügen von Daten lokal auf jqgrid über ein popup-Formular und klicken Sie auf speichern-es fügt sich ein in db.

$("#template-list").jqGrid
  ({ 
        url:'getTemplateCategories.jsp?TrUserId=122',
        datatype: 'xml', 
        mtype: 'post',
        colNames:['Name','Description','id','SaveAs'],
        colModel :[
                    {name:'Name',index:'Name', width:300, align:'left', sortable:false,xmlmap:"catName", editable:true},
                    {name:'Description',index:'Description', width:300, align:'left', sortable:false,xmlmap:"catDescription", editable:true},
                    {name:'id',index:'id', width:0, align:'left', sortable:false,xmlmap:"catId" , hidden: false},
                    {name:'SaveAs', index:'SaveAs', width:0, align:'left', sortable:false, hidden: false}
                   ],
        xmlReader: { 
                     root:"Categories", 
                     row:"item",                  
                     repeatitems:false                
                   },
        height : '461',
        scrollOffset:"0",
        hidegrid: "No",
        closeAfterAdd : true,   
        closeAfterEdit : true,    
        border: '2',
        pager: '#template-pager',
        viewrecords: true,
        minheight: '190',
        width: '600',
        autoheight: true,
        mtype:'POST',
        forceFit : true,    
        align:'left',   
        emptyrecords: "Nothing to display",
        rowNum:'20',
        paging: true,
        editurl: 'TemplateCategoryWebView.jsp',
        cellsubmit:'clientArray',               
        loadonce : true  
   });    

Ich bin mit dem folgenden code hinzufügen /Bearbeiten einer Zeile auf die Schaltfläche klicken Sie nach der Zeile Auswahl :

 function add()
{   
    $("#template-list").jqGrid('editGridRow',"new",{width:400,height:200,reloadAfterSubmit:false,closeAfterAdd:true});
}
function modify()
{   
    var selRowId = $('#template-list').jqGrid('getGridParam','selrow');
    var rowid =  $('#template-list').jqGrid('getCell', selRowId, 'id') ;
    var rowData = $("#template-list").jqGrid('getRowData',rowid);
    if( selRowId)
    {
        $('#template-list').jqGrid('editGridRow',selRowId,{width:400,height:200,reloadAfterSubmit:false,closeAfterEdit:true});
        alert("selRowId  :  "+selRowId+"    rowid : "+rowid);
        EditCats=EditCats.concat(rowid) ;   

    }   
    else
    {
        alert("Please select a row");
    }
}

Wenn ich jetzt Bearbeiten einer bestimmten Zeile, es öffnet den Datensatz und ermöglicht dem Benutzer zum Bearbeiten von name und Beschreibung Werte und wenn ich auf den submit-button-das spart nicht nur bearbeitete Werte lokal in das jqgrid aber ändert sich auch die Spalte "id" - Wert auf den Wert von "selRowId". Kann mir bitte jemand erklären, was Los ist, wie ich bin mit meinem Latein am Ende versuchen, dies zu beheben. Ich möchte diese Funktionen Verhalten sich genau wie ich schon erwähnt habe und nicht durch irgendwelche anderen alternativen Methode wie inline-editing, weil das ist ein Migrations-Projekt und Sie wollen Sie behalten die Art und Weise der Funktionalität war die Arbeit früher(d.h. verwenden von popup-Bildschirme) zu verringern, Kunden zu erlernen.Ich habe die Suche nach einer Lösung für dieses problem, seit geraumer Zeit aber nicht haben, ein.

Es auch versucht, die übergabe der id-Wert in editGridRow aber seine keine Verwendung. Bitte helfen Sie.

Dank,
Anita

  • Könnten Sie ändern id im colModel ( name:'id',index:'id' ), um einen anderen Namen und wiederholen Sie den gleichen test? Zum Beispiel können Sie name:'catId' statt name:'id',index:'id'. Das problem ist, dass der name id wird intern verwendet, während der Bearbeitung von Daten.
  • Danke für Eure Antworten. geändert colModel Werte und jetzt funktioniert es gut für edit aber jetzt auf das hinzufügen einer neuen Zeile, die id leer ist, wenn es sein sollte jqg1.
  • Sollten Sie verwenden reloadAfterSubmit: true option mindestens zum Formular Hinzufügen. Wenn Sie nicht, dass Sie zurückkehren, wird der neue Wert von id (catId) in der server-Antwort von editurl: 'TemplateCategoryWebView.jsp'. Wenn die Reaktion sein wird kein Zeilenumbruch in XML dann jaGrid ändern rowid für Sie. Wenn Sie möchten, um die Anzeige der id für den Benutzer (in catId Spalte) oder die server-Antwort ist nicht eine neue id (z.B. XML verpackt), dann müssen Sie afterSubmit Rückruf der Formularbearbeitung. Also meine Empfehlung ist: nutzen Sie reloadAfterSubmit: true für Sie mindestens für die Bettelei.
  • sorry für die späte Antwort aber das hat nicht funktioniert entweder
  • kann ich dich etwas Fragen, auf das gleiche Problem...wenn dieses Problem behoben ist??
  • ja ich habe den funktionierenden code für Ihre Referenz.
  • Danke @Anita. Aber ich bin auch nicht mehr vor diesem Problem. Gelöst lange zurück, aber vielen Dank für den Beitrag Antworten.. könnte Jemand anderes bekommen benifited.

InformationsquelleAutor Anita | 2013-11-27
Schreibe einen Kommentar