2010-12-28 8 views
0

Ich habe eine harte Zeit, Fußzeileninformationen mit jqGrid anzuzeigen. Ich habe alle notwendigen Schritte zur Einrichtung der Fußzeile ausgeführt. Die Serveranfrage basiert auf einer Filterbedingung. Der Server gibt einen JSON mit entsprechenden "userdata" Informationen zurück. Im Folgenden finden Sie die JSON- und JavaScript-Informationen.Nicht möglich, JqGrid Fußzeile mit Userdateninformationen zu füllen

{ 
    "timeatt": [ 
     { 
      "empnum" : "12345", 
      "name" : "ABCDEFG", 
      "shift" : "1", 
      "postdate" : "12/27/10", 
      "regular" : "40", 
      "ot" : "8", 
      "dbltime" : "0", 
      "holiday" : "0", 
      "vacation" : "0", 
      "payrate" : "0" 
     }, 
     { 
      "empnum" : "67890", 
      "name" : "HIJKLMN", 
      "shift" : "1", 
      "postdate" : "12/27/10", 
      "regular" : "32", 
      "ot" : "0", 
      "dbltime" : "0", 
      "holiday" : "0", 
      "vacation" : "8", 
      "payrate" : "0" 
     } 
    ], 
    "userdata": { 
     "name": "Totals", 
     "regular": "72", 
     "ot": "8", 
     "dbltime": "0", 
     "vacation": "8", 
     "holiday": "0" 
    }, 
    "totalrecords" : "2" 
} 

jqGrid Informationen

$("#empinfo").jqGrid({ 
    datatype:'json', 
    colNames:['Clock#','Name','PostDate','Shift','Regular','Over Time','Dbl Time', 
       'Vacation','Holiday'], 
    colModel:[{name:'empnum', index:'empNum', width:60}, 
       {name:'name', index:'name', width:200}, 
       {name:'postdate', index:'postdate', width:60,editable:false, 
       hidden:true,editrules:{edithidden:false}}, 
       {name:'shift', index:'shift', width:60,editable:true,edittype:'text'}, 
       {name:'regular', index:'regular', width:70,editable:true, 
       edittype:'text',align:"right", formatter: 'number'}, 
       {name:'ot', index:'ot', width:70,editable:true,edittype:'text', 
       align:"right", formatter: 'number'}, 
       {name:'dbltime', index:'dltime', width:70,editable:true, 
       edittype:'text',align:"right", formatter: 'number'}, 
       {name:'vacation', index:'vacation', width:70,editable:true, 
       edittype:'text',align:"right", formatter: 'number'}, 
       {name:'holiday', index:'holiday', width:70,editable:true, 
       edittype:'text',align:"right", formatter: 'number'}], 
    scroll:1, 
    scrollRows:true, 
    height:300, 
    editurl:'clientArray', 
    footerrow:true, 
    userDataOnFooter:true, 
    altRows:true, 
    onSelectRow: function(rowNum){ 
     if (rowNum && rowNum != lastSel) { 
      $("#empinfo").saveRow(lastSel); 
     } 
     $("#empinfo").editRow(rowNum,true); 
     lastSel = rowNum; 
    }, 
    }); 

ich alles in der jqGrid Demo aufgeführt versucht, aber für somereason, der "userdata" -Informationen nicht ausgefüllt zu werden. Kann mir jemand helfen ?

Dank SMargabandhu

Antwort

0

Zunächst einmal sollten Sie Komma vor }); am Ende des Codes entfernen. Dein Code ist sicher nicht voll. Zum Beispiel url Parameter ist nicht definiert, also nehme ich an, dass das Komma aus der Reduktion von echtem Code kommt.

Über Ihr Hauptproblem. Sie sollten jsonReader in die jqGrid-Definition aufnehmen, um die von Ihnen geposteten JSON-Daten anzeigen zu können. Die jsonReader können folgende:

jsonReader: { 
    repeatitems: false, 
    root:'timeatt', 
    page: function (obj) { return 1; }, 
    total: function (obj) { return 1; }, 
    records: function (obj) { return obj.length; } 
} 

Danach werden die Daten inklusive angezeigt, die 'userdata' wird (siehe here) angezeigt

+0

Sie Oleg danken. Deine Lösung hat funktioniert. Ich war mir nicht sicher über JsonReader. Ich bin nur ein Anfänger und experimentierte mit jedem Attribut. Aber vielen Dank für den Hinweis auf meinen Fehler. – Shanker

+0

Hallo Oleg, deine Lösung hat funktioniert, als ich das URL-Attribut angegeben habe. Aber in meinem Fall ist die URL leer, da ich eine Filterbedingung habe und basierend darauf führe ich eine Funktion aus, die einen Server aufruft, um die erforderlichen JSON-Daten zu erhalten. Ist es möglich, die Fußzeile festzulegen, nachdem ich das jqGrid (addRowData) bevölkert habe? – Shanker

+0

@Shanker: Versuchen Sie 'footerData' Methode zu verwenden: $ (" list "). JqGrid (" footerData "," set ", myUserData, true); – Oleg

0

die gleichen Namen der Spalten in (colModel) Benutzerdaten, beispielsweise zurück:

userdata = new {Stunden = lista.Sum (x => x.Horas) .ToString() Funktion = "Total HH:"}