2011-01-17 7 views
8

Zauważyłem w jqgrid demo (http://www.trirand.com/blog/jqgrid/jqgrid.html> Zaawansowane> Multiselect), że zaznaczone są tylko wiersze (widoczne) na bieżącej stronie, jeśli włączone jest stronicowanie.jqgrid multiselect wybiera tylko wiersze na bieżącej stronie, jeśli włączone jest stronicowanie. Jak sprawić, by wybrał on wiersze na różnych stronach?

Wszelkie wskazówki dotyczące obsługi wielu stron. Lub jakiekolwiek inne alternatywne rozwiązania?

Odpowiedz

3

Wiem, że to pytanie jest zakurzone, ale ostatnio potrzebowałem tej funkcji i znalazłem to, co uważam za znacznie bardziej czysty sposób.

Zamiast dołączać zdarzenie do każdego z pól wyboru, dlaczego nie należy używać zdarzeń o wartości jqGrid w postaci onSelectRow i onSelectAll? Po wybraniu wiersza sprawdź, czy lista wybranych wierszy zawiera ten wiersz (na podstawie identyfikatora). Dodaj go do listy, jeśli go tam nie było i został wybrany, usuń go, jeśli był tam i nie jest już wybrany. Jeśli wszystkie wiersze są zaznaczone, wykonaj ich iterację.

var $grid = jQuery("#myGrid"); 
var updateIdsOfSelectedRows = function (id, isSelected) { 
    var contains = idsOfSelectedRows.contains(id); 
    if (!isSelected && contains) { 
     for(var i=0; i<idsOfSelectedRows.length; i++) { 
      if(idsOfSelectedRows[i] == id) { 
       idsOfSelectedRows.splice(i, 1); 
       break; 
      } 
     } 
    } 
    else if (!contains) { 
     idsOfSelectedRows.push(id); 
    } 
}; 

$grid.jqGrid({ 
    .... 
    onSelectRow: function(rowid, status){ 
     updateIdsOfSelectedRows(rowid, status); 
    }, 
    onSelectAll: function (aRowids, status) { 
     var i, count, id; 
     for (i = 0, count = aRowids.length; i < count; i++) { 
      id = aRowids[i]; 
      updateIdsOfSelectedRows(id, status); 
     } 
    }, 
    .... 
)}; 

Mam nadzieję, że pomaga to innym osobom szukającym rozwiązania.

0

Domyślam się, że chciałbyś wybrać kilka wierszy na jednej stronie, a następnie przejść do innej strony, może wybrać więcej wierszy i zachować cały ten wybór.

Będziesz musiał obsłużyć zdarzenia wyboru w każdym polu wyboru. Dołącz obsługę zdarzeń do each $("#cb_my_grid") i zachowaj tablicę wybranych elementów. Następnie, gdy potrzebujesz danych (być może po przesłaniu strony), możesz przesłać wartości w tablicy.

Powiązane problemy