2013-02-28 11 views
7

W moim projekcie używam datatable z <p:column selectionMode="multiple" /> , aby wpisy mogły być wielokrotne zaznaczone przy użyciu pól wyboru.Primefaces z datownikiem z wyborem pól wyboru TYLKO

Jednak, gdy użytkownik kliknie wiersz, wszystkie poprzednie zaznaczenia są odznaczone i wybierany jest tylko ten wiersz. To zachowanie jest nieoczekiwane i denerwujące. Chciałbym wyłączyć zachowanie rowSelect i rowUnselect przy kliknięciu w wiersz, ale wydaje się, że nie miałem sposobu, aby zrobić, ale hackowanie źródła datatable.js.

Czy ktoś to zaimplementował wcześniej? Dzięki za odpowiedź.

Zastosowanie:

primefaces 3,5

Mojarra 2.1.6

GlassFish 3.1.2.2

+2

Podaj swój kod. Abyśmy mogli znaleźć błąd lub logiczny błąd w tym. –

+1

Tutaj jego kod nie jest ważny, ponieważ ten sam problem występuje w [samej witrynie] (http://www.primefaces.org/showcase/ui/datatableRowSelectionRadioCheckbox.jsf). Wygląda na to, że jest tylko z polem wyboru, a nie z przyciskiem radiowym. Też chcę uzyskać takie samo zachowanie, o którym wspomniał PO. Ktoś to rozwiązał? –

Odpowiedz

11

Według tego feature request ta funkcja jest obecnie obsługiwana w Primefaces wersjach 5.0.3 & 5,1 poprzez dodanie rowSelectMode = "pole" do DataTable.

odniesienia Dokumentacja (PF 5.1):

opcja Użyj rowSelectMode dostosować domyślne zachowanie na rzędzie kliknięciem wielokrotnego wyboru włączoną DataTable. Domyślną wartością jest "nowy", który usuwa wcześniejsze zaznaczenia, tryb "dodawania" zachowuje poprzednie wybory tak samo, jak wybór wiersza z kliknięciem myszą, gdy metakey jest ustawiony na , a tryb "wyboru" umożliwia wybór wiersza tylko z polami wyboru.

+0

Dzięki, bardzo mi to pomogło – SoftMolina

1

umieścić to w Twojej strony, może pomóc w zatrzymaniu wybór po kliknięciu wiersza.

$(document).ready(
    function() { 
     $("tr td").click(function(event) { 
      if (!$(this).find("div").hasClass("ui-chkbox") || $(this).find("div").find("div").hasClass("ui-state-disabled")) { 
       event.stopPropagation(); 
     } 
    }); 
}); 
+0

Zamiast tego oznaczać, powinienem zaznaczyć, że powyższy kod nadal powoduje ten sam problem, ale lokalizuje go w jednej komórce. – Charlie

Powiązane problemy