Grup düzeyinde seçim içeren SlickGrid çok düzeyli gruplama


10

mevcut şebeke durumu

Özel bir seçim modeli yanı sıra özel bir onay kutusu seçim eklentisi ile kaygan bir ızgara uyguladım. Ayrıca, üst düzeyde seçim yapılmasına izin vermek için grup düzeyinde onay kutuları ekledim. Gereksinimlerimden biri, daraltılmış gruplamaların yine de üst düzey gruplama onay kutuları aracılığıyla seçilebilmesidir.

Tökezleyen bloğum şu anda grupta görünmeyen satırları nasıl seçeceğimi anlayamıyorum gibi görünüyor. Kaygan ızgara, görsel olarak seçilen öğeler kümesini korurken, ızgaralar veri görünümü, seçilen veya görünmeyen seçili öğelerin tamamını tutar. Ancak, daraltılmış bir satırın grup onay kutusunu tıklattığınızda verilere nasıl bağlanacağını anlayamıyorum.

Benim ızgara gibi yapılandırıyorum:

let checkboxSelectionModel = new Slick.CheckboxSelectionModel();
this.grid.setSelectionModel(checkboxSelectionModel);

this.grid.registerPlugin(new Slick.Data.GroupItemMetadataProvider());

let onSelectedRowIdsChanged = this.dataProvider.syncGridSelection(this.grid, true, true);

onSelectedRowIdsChanged.subscribe(
  function(e: any, args: any)
    {
      //business logic stuff                    
    }
  );

let groupedCheckboxSelector = new Slick.GroupedCheckboxSelectColumn({
  cssClass: "slick-cell-checkboxsel",
  onSelectedRowIdsChangedHandler: onSelectedRowIdsChanged
});

let columns = this.grid.getColumns();
columns.unshift(groupedCheckboxSelector.getColumnDefinition());
this.grid.setColumns(columns);

this.grid.registerPlugin(groupedCheckboxSelector);

Burada dahil etmek çok uzun, özel eklentileri Gist satır bakarsanız, Özellikle 57arasında slick.checkboxselectionmodel:

$.each(dataItem.rows, function(index, groupRow) {
  var groupRowIndex = _self._grid.getData().getRowById(groupRow.id);
    if (groupRowIndex) {
      selection.push(groupRowIndex);
    }
});

groupRowIndex hiçbir zaman gizli satırlar için çözülmez ve bu nedenle asla seçilmez. Tıklandığında grubu genişletmeye çalıştım, sonra çalışan satırları çözdüm, ancak grup daha sonra daraltıldığında, ızgarada yanlış satırlar seçildi.

herhangi bir yardım büyük mutluluk duyacağız!

bazı notlar:


2
en kısa zamanda şişman bir ödül koyacağım
Julien

1
Bunun için 165 numaralı açık bir sorun var ve bence size ya da başka birisine 6pac çatalındaki bu soruna bir düzeltme sağlamanız gerekiyor. Bu, toplumun katkılarıyla açık kaynaklı bir projedir, bu nedenle herhangi bir katkı, bu lib'in yıllar içinde daha iyi olmasına yardımcı olur.
ghiscoding

Yanıtlar:


1

güncellenmiş eklentilere ulaşın

Kendine güvenen işlevsel bir çözüm, benzer davranış arayan herkesi doğru yola koyabilir, ancak bu eklentilerden birinin bağımsız olarak ne kadar iyi çalışacağından emin değilim. gereksinimlerimden biri yalnızca satır onay kutusuyla satır seçimine izin vermekti.

bir gotcha (eminim ki kolayca geliştirilebilir) grup seviyesi onay kutusunun hala grup formatı operatörünüzde tanımlanması gerektiğidir

sorunumun ana çözümü, grup düzeyinde seçimler / seçimler kaldırırken tüm daraltılmış grupları genişletmek, herhangi bir seçme / seçimini kaldırma yordamlarını gerçekleştirmek ve daha önce genişletilmiş grupları daraltmaktı.

DÜZENLE:

Izgara büyük miktarda veriye (10 bin satır) sahip olduğunda bu başarısız olur. Ödülle yeniden açma.

Pek çok grubun sorunlara neden olması için genişlemesi ve daralması gerektiğinin performans isabeti gibi görünüyor.


1
Bu cevap erken idi ve büyük veri kümeleriyle çalışmıyor
Julien

1
Sadece bazı lütuflar için bu şekilde memnun etmek etik değil, aslında OP bu cevabın gönderilmesinden sonra cömertliğe başladı ve bunun nedeni OP'nin bu cevapla istediği sonuçlara sahip olmamasıydı. Yani, lütfen kazanamadığınız ödül için böyle yalvarmayı bırakın ve bunun yerine iyi / daha iyi bir çözüm bulmak için zamanınız varsa OP'ye sorununu çözmeye çalışın.
Christos Lytras

@ChristosLytras, yorumumu hemen sileceğim, ipucu için teşekkürler.
AmerllicA

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.