2010-12-16 16 views
1

Ich versuche, einen Klick auf die erste Zelle zu simulieren, nachdem das Raster geladen wurde. Ich weiß bereits, wie ich das erreichen kann, aber aus irgendeinem Grund kann ich das Ereignis "loadComplete" nicht auslösen. Ich habe eine einfache Funktion mit einer einzigen Warnung hinzugefügt, um es auszuprobieren, aber obwohl die Seite ohne Probleme geladen wird, bekomme ich keine Warnung (und das Debugging zeigt, dass die Funktion nie aufgerufen wird).Kann JQGrid loadComplete-Ereignis nicht auslösen

"GridComplete" funktioniert auch nicht.

I jgGrid 3.8.2

Jede Idee, bin mit, was mache ich falsch? Ich habe meinen Code unten geschrieben:

$(document).ready(function() { 
     $("#grid").jqGrid(
      { 
       datatype: function() { 
        $.ajax(
        { 
         type: "POST", 
         url: "Default.aspx/GetListOfPersons", 
         data: "{}", 
         contentType: "application/json; charset=utf-8", 
         dataType: "json", 
         success: function (jsondata, stat) { 
          if (stat == "success") 
           jQuery("#grid")[0].addJSONData(JSON.parse(jsondata.d)); 
          else 
           alert("error"); 
         } 
        }); 
       }, 
       jsonReader: 
       { 
        root: "rows", 
        page: "page", 
        total: "total", 
        records: "records", 
        repeatitems: false, 
        id: "Id" 
       }, 
       colModel: //Columns 
       [ 
        { name: 'FirstName', index: 'FirstName', width: 200, align: 'Left', label: 'First Name', editable: true }, 
        { name: 'LastName', index: 'LastName', width: 300, align: 'Left', label: 'Last Name', editable: true }, 
        { name: 'Age', index: 'Age', width: 50, align: 'Right', label: 'Age', editable: true } 
       ], 
       caption: "Personas", 
       cellEdit: true, 
       cellsubmit: 'clientArray', 
       pager: "#pager", 
       loadComplete: function() { alert("load complete"); } 
      } 
      ).navGrid('#pager', { edit: false, add: false, del: false, search: false }).navButtonAdd('#pager', 
      { 
       caption: "Save", 
       onClickButton: function() { 
        var ret = $("#grid").getChangedCells('dirty'); 
        var ret2 = JSON.stringify(ret); 
        $.ajax(
        { 
         type: "post", 
         url: "Default.aspx/GetChangesBack", 
         data: '{"o":' + ret2 + '}', 
         contentType: "application/json; charset=utf-8", 
         dataType: "json" 
        } 
        ); 
       }, 
       position: "last" 
      } 
      ); 
    } 
    ); 
+0

Konnten Sie den Code von 'Default.aspx/GetListOfPersons' posten? Es scheint mir, dass Sie JSON Serialisierung ** zweimal machen **. Ich nehme das an, weil Sie 'JSON.parse (jsondata.d)' innerhalb des 'Erfolg'-Handlers von '$ .ajax' verwenden. Wenn Sie den Code veröffentlichen, werde ich versuchen, es so zu ändern, dass Sie jqGrid verwenden können, ohne 'datatype' als Funktion zu haben. – Oleg

Antwort

5

Weil Sie $.ajax selbst anrufen, ich glaube nicht, loadCompletesollte Feuer.

gridComplete sollte funktionieren, obwohl.

Verwandte Themen