วิธีแนบเหตุการณ์อย่างถูกต้องเพื่อปิดกล่องโต้ตอบสำหรับตัวเลือกคอลัมน์ของ jqGrid

ฉันประสบปัญหาในการใช้เหตุการณ์โต้ตอบการปิดสำหรับปลั๊กอิน/วิดเจ็ตตัวเลือกคอลัมน์ของ jqGrid นี่คือสิ่งที่ฉันมี - ฉันเริ่มต้นด้วยการเริ่มต้น jqGrid โดยมีตัวเลือกคอลัมน์แนบอยู่ที่ตอนท้ายเช่นนั้น

ticketsTable = tableWrap.jqGrid({
    url: ... ,
    datatype: ... ,
    ...
    loadComplete: function(d) {
        ...
    }
})
.navGrid('#ticketsList_footer', {edit:false, add:false, del:false, cloneToTop:true})
.navButtonAdd('#ticketsList_toppager', {
    caption: "Columns",
    title: "Reorder Columns",
    id: "colButton",
    onClickButton: function(){ ticketsTable.jqGrid('columnChooser'); }
});

จากนั้นในฟังก์ชัน loadComplete (ด้านบน) ฉันจะค้นหากล่องโต้ตอบและแนบการแจ้งเตือนไปยังเหตุการณ์ที่ปิดอยู่เช่นนั้น

$('#colButton').click(function(e){
    setTimeout(function(){
        log($( ".ui-dialog" ).length);
        $( ".ui-dialog" ).bind( "dialogclose", function(event, ui) {
          log('close dialog event captured!');
        });
    }, 500);
});

ด้วยเหตุผลบางประการ การแจ้งเตือนจะปรากฏขึ้นเมื่อฉันปิดกล่องโต้ตอบโดยใช้ปุ่ม "x" ที่มุมเท่านั้น เมื่อฉันคลิก "ตกลง" หรือ "ยกเลิก" ก็ไม่มีการแจ้งเตือน ฉันพลาดอะไรไป?

BTW เหตุผลที่ฉันทำสิ่งนี้คือฉันต้องอัปเดตขนาดของตาราง (setGridWidth) หลังจากที่กล่องโต้ตอบปิดเพื่อปรับสำหรับคอลัมน์ที่เพิ่มหรือลบออก อาจมีวิธีที่หรูหรากว่านี้ในการทำเช่นนั้น?


person Ilia Draznin    schedule 09.08.2011    source แหล่งที่มา


คำตอบ (1)


คุณสามารถใช้รหัสต่อไปนี้

tableWrap.jqGrid (
    'navButtonAdd',
    '#pager',
     {
         caption: "", buttonicon: "ui-icon-calculator", title: "choose columns",
         onClickButton: function() {
             tableWrap.jqGrid('columnChooser', {
                     done: function(perm) {
                         if (perm) {
                             tableWrap.jqGrid("remapColumns", perm, true);
                             alert("The column chooser closed with 'OK' button");
                         } else {
                             alert("The column chooser closed with 'Cancel' button");
                         }
                     }
                 }
             );
        }
     });

ดูการสาธิต

person Oleg    schedule 09.08.2011
comment
ทำงานเหมือนมีเสน่ห์ ขอบคุณ :) - person Ilia Draznin; 09.08.2011