2016-05-04 7 views
1

Ich verwende Dojo "dgrid/OnDemandGrid". In diesem ich bin die eingebaute Funktionalität der Check-Box für jede Zeile.Dojo Dgrid: wählen Sie die Auswahl der Header-Checkbox

Das Problem ist, wenn ich alle Check-Boxen eins nach dem anderen dann seine Header-Check-Box, dh wählen Sie alle Check-Box wird nicht überprüft Select All State und gleich mit, wenn alle Check-Boxen einzeln abwählen dann wird das Kontrollkästchen Alle auswählen nicht abgewählt bleibt im gemischten Zustand Deselect All State. Dort sind drei Zustände wahr, falsch und gemischt.

Als ich eine Lösung dafür suchte, fand ich, dass es ein Fehler in Dojo Dgrid selbst ist. Dies ist die URL, die Sie überprüfen können. DOjo Dgrid Sellect All functionality

Bitte helfen Sie mir, dieses Problem zu lösen, Vielen Dank im Voraus.

Antwort

0

Die Eigenschaft zum Aktualisieren des Header-Kontrollkästchens (allSelected) wird nicht aktualisiert, wenn Sie die Zeilen einzeln auswählen. Sie könnten Recht haben, es könnte ein Fehler sein. Hast du es gemeldet?

Die Problemumgehung Lösung, die ich denken könnte ist, den Status der Header-Checkbox selbst zu aktualisieren. Unten ist der Code, um das Gleiche zu tun.

  grid.on('dgrid-select', function() { 
       var selectedRows = []; 
       for (var e in grid.selection) { 
        grid.selection[e] && selectedRows.push(e) 
       } 

       //get the selector column and checkbox from that column 
       var column = grid.columns["select"]; 
       var headerCheckbox = column._selectorHeaderCheckbox; 
       if (selectedRows.length === grid.get('total')) { 
        //update the checkbox when the selection count equal to total count. 
        headerCheckbox.indeterminate = false; 
        headerCheckbox.checked = true; 
        headerCheckbox.setAttribute('aria-checked', 'true'); 
        grid.allSelected = true; 
       } 
      }); 

      grid.on('dgrid-deselect', function() { 
       var selectedRows = []; 
       for (var e in grid.selection) { 
        grid.selection[e] && selectedRows.push(e) 
       } 

       //get the selector column and checkbox from that column 
       var column = grid.columns["select"]; 
       var headerCheckbox = column._selectorHeaderCheckbox; 
       if (selectedRows.length === 0) { 
        headerCheckbox.indeterminate = false; 
        headerCheckbox.checked = false; 
        headerCheckbox.setAttribute('aria-checked', 'false'); 
        grid.allSelected = false; 
       } 
      }); 

Ich hoffe, das war hilfreich.

+0

@Mahi Kalyanar: Hat die Lösung für Sie funktioniert? –

Verwandte Themen