SlickGrid การจัดกลุ่มหลายระดับพร้อมการเลือกระดับกลุ่ม


10

สถานะกริดปัจจุบัน

ฉันใช้กริดที่ลื่นไหลด้วยรูปแบบการเลือกที่กำหนดเองรวมถึงปลั๊กอินการเลือกช่องทำเครื่องหมายที่กำหนดเอง ฉันได้เพิ่มช่องทำเครื่องหมายระดับกลุ่มเพื่ออนุญาตให้สลับการเลือกที่ระดับบนสุด หนึ่งในความต้องการของฉันคือการจัดกลุ่มที่ถูกยุบยังคงสามารถเลือกได้ผ่านช่องทำเครื่องหมายการจัดกลุ่มระดับผู้ปกครอง

บล็อกที่สะดุดของฉันดูเหมือนว่าฉันไม่สามารถเข้าใจวิธีเลือกแถวที่ไม่ปรากฏในกลุ่มในขณะนี้ เส้นตารางเรียบนั้นจะรักษาชุดของรายการที่เลือกทางสายตาในขณะที่มุมมองข้อมูลกริดเก็บชุดของรายการที่เลือกไว้เต็มรูปแบบให้มองเห็นหรือไม่ อย่างไรก็ตามฉันไม่สามารถหาวิธีการไพพ์ลงในข้อมูลได้เมื่อคลิกที่ช่องทำเครื่องหมายกลุ่มของแถวที่ยุบ

ฉันกำลังกำหนดค่ากริดเช่น:

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);

ส่วนสำคัญไปยังปลั๊กอินที่กำหนดเองนานเกินไปที่จะรวมไว้ที่นี่ โดยเฉพาะถ้าคุณดูที่บรรทัด57ของslick.checkboxselectionmodel:

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

groupRowIndex ไม่เคยได้รับการแก้ไขสำหรับแถวที่ซ่อนอยู่ดังนั้นจึงไม่เคยถูกเลือก ฉันพยายามที่จะขยายกลุ่มเมื่อคลิกแล้วแก้ไขแถวซึ่งใช้งานได้ แต่เมื่อกลุ่มถูกยุบหลังจากนั้นแถวที่ไม่ถูกต้องจะถูกเลือกในตาราง

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก!

หมายเหตุบางส่วน:


2
ฉันจะเพิ่มค่าหัวอ้วนโดยเร็วที่สุด
Julien

1
มีปัญหา # 165 ที่เปิดอยู่สำหรับเรื่องนี้และฉันคิดว่าสิ่งที่จะช่วยได้ก็คือคุณหรือใครก็ตามเพียงแค่ให้การแก้ไขปัญหาดังกล่าวในส้อม 6pac นี่เป็นโครงการโอเพ่นซอร์สที่มีการสนับสนุนจากชุมชนดังนั้นการมีส่วนร่วมใด ๆ จะช่วยทำให้ lib นี้ดีขึ้นกว่าปีที่ผ่านมา
ghiscoding

คำตอบ:


1

สรุปสาระสำคัญเป็นปลั๊กอินที่อัปเดต

วิธีแก้ปัญหาการทำงานที่ฉันมั่นใจสามารถทำให้ทุกคนที่กำลังมองหาพฤติกรรมที่คล้ายกันบนเส้นทางที่ถูกต้อง แต่ฉันไม่แน่ใจว่าปลั๊กอินเหล่านี้จะทำงานได้อย่างอิสระหรือไม่ ข้อกำหนดอย่างหนึ่งของฉันคืออนุญาตให้เลือกแถวผ่านช่องทำเครื่องหมายแถวเท่านั้น

หนึ่ง gotcha (ที่ฉันแน่ใจว่าได้รับการปรับปรุงให้ง่ายขึ้น) คือช่องทำเครื่องหมายระดับกลุ่มยังคงต้องมีการกำหนดไว้ในโอเปอเรเตอร์รูปแบบกลุ่มของคุณ

ทางออกหลักในการแก้ไขปัญหาของฉันคือการขยายกลุ่มที่ยุบทั้งหมดเมื่อทำการเลือกระดับกลุ่ม / ยกเลิกการเลือกดำเนินการเลือก / ยกเลิกการเลือกจากนั้นยุบกลุ่มที่ขยายก่อนหน้านี้ใด ๆ

แก้ไข:

สิ่งนี้จะล้มเหลวเมื่อกริดมีข้อมูลจำนวนมาก (10k แถว) เปิดอีกครั้งด้วยเงินรางวัล

ดูเหมือนว่าประสิทธิภาพการทำงานของการขยายและยุบกลุ่มจำนวนมากทำให้เกิดปัญหา


1
@AmerllicA คำตอบนี้ก่อนกำหนดและไม่สามารถใช้ได้กับชุดข้อมูลขนาดใหญ่
Julien

1
@AmerllicA มันไม่เพียง แต่ผิดจรรยาบรรณที่จะกรุณาเช่นนี้สำหรับความโปรดปรานบางอย่าง แต่อันที่จริงแล้ว OP เริ่มต้นเงินรางวัลหลังจากคำตอบนี้ถูกโพสต์และนั่นเป็นเพราะ OP ไม่ได้ผลลัพธ์ที่เขาต้องการด้วยคำตอบนี้ ดังนั้นโปรดหยุดขอร้องอย่างนี้เพื่อเงินรางวัลที่คุณไม่ได้รับและลองช่วย OP กับปัญหาของเขาถ้าคุณมีเวลาคิดหาวิธีแก้ปัญหาที่ดีกว่า
Christos Lytras

@ChristosLytras ฉันจะลบความคิดเห็นของฉันทันทีขอบคุณสำหรับคำใบ้
AmerllicA

@ChristosLytras คิดในสิ่งเดียวกันไม่สามารถพูดได้ดีกว่า
Islam Elshobokshy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.