2010-09-27 6 views
5

Wir verwenden einen benutzerdefinierten Formatierer, um HTML-Formular-Textfelder auszugeben. Falls ein Benutzer Daten eingegeben hat und sie die nächste/vorherige Schaltfläche drücken, möchten wir ihnen sagen, dass Sie Daten bearbeitet haben, klicken Sie auf OK, um auf dieser Seite zu bleiben und Ihre Daten zu speichern. Wie kannst du das tun?jqGrid verhindert Pagernavigation?

Das Ereignis 'onPaging' wird ausgelöst, wenn Sie den Pager verwenden, aber es scheint nicht zu verhindern, dass die Paginierung auftritt.


Update: Aktuelle Abhilfe:

var currPg = 1; 
var dirty = 'false'; 


    $("#list").jqGrid({ 
    ... 
    onPaging: function (b) { 
     var nextPg = $("#list").getGridParam("page"); 

     if (dirty == 'false') { 
      currPg = nextPg; 
      return; 
     } 


     $("#dialog-confirm").dialog({ 
     modal: true, 
     buttons: { 
      "Stay on current page": function() { 
       $(this).dialog("close"); 
      }, 
      "Change page": function() { 
       $(this).dialog("close"); 
       reloadGrid($("#list"), null, nextPg, 'false'); 
      } 
     } 
     }); 

     $("#list").setGridParam({page:currPg}); //Workaround - jqGrid still increments the page num even when we return stop so we have to reset it (and track the current page num)  
     return 'stop'; 
    }, 

Update 2: Bug angemeldet here.

Antwort

4

Wenn die Funktion onPaging "Stopp" zurückgibt, wird die Paginierung gestoppt.

+0

Danke Oleg, arbeitet jetzt daran. Ein Fehler, den ich gefunden habe, ist, dass, wenn Sie 'stop' zurückgeben, die Grid-Seitenzahl immer noch inkrementiert wird .. einen Fehler senden .. –

+0

@Marcus: Als Workaround können Sie den Wert mit 'setGridParam' zurücksetzen – Oleg

+0

Just did dass :) Gibt es eine Möglichkeit, die aktuell angezeigte Seite zu bestimmen? Wenn Sie 'getGridParam ('page')' 'verwenden, wird die Seite zurückgegeben, die als nächstes angezeigt wird. Ich benutzte eine neue Variable, um die tatsächliche angezeigte Seite Nummer zu verfolgen - nicht sicher, ob es einen besseren Weg gibt. –

0

Nach meiner Beobachtung onPaging-Ereignis funktioniert gut in den neuesten jqgrid-Plugin.Wenn wir vorherige jqgrid-Plugin (vor 3.8 Version) verwenden .OnPaging-Ereignis wird funktionieren, aber es gibt Fehler in der Seitennumerierung, nachdem wir dieses Ereignis verwenden.Als es automatisch Wert der Seite erhöhen entweder der Benutzer klickt auf ok oder bricht ab (in beiden Fällen). Das führt zu korrupten Daten der Beglaubigung.