Senin, 10 Oktober 2011

Misteri ModalPopupExtender yg muncul sepersekian detik dan hilang..

Hello Guys.. (N Ladies)
Pernah kah anda mengalami hal ini??

Jadi ketika anda sedang meload sebuah Page..
Panel yg seharusnya merupakan ModalPopupExtender (bahasa gaulnya : Pop Up), muncul sepersekian detik lalu menghilang..





Si Panel bandel ini muncul secepat kedipan mata.. Wow..
Biasanya sih ini terjadi ketika suatu halaman nge-load cukup lama.. sehingga Panel tersebut terlihat nongkrong di sono, sebelum akhirnya diproses masuk ke dalam Pop Up..

SOLUSI :
Cukup mudah koq.. anda cukup menambahkan satu Panel Dummy kosong sebagai pengganti panel yg sesungguhnya..

Misalnya contoh kasus.. Panel Pop Up bernama "Panel_PopUpPapIp"..
//WebPage.aspx
<AjaxControl:ModalPopupExtender ID="MPE1" 
 runat="server"
 TargetControlID="hiddenButton"
 PopupControlID="Panel_PopUpPapIp" />

<asp:Panel ID="Panel_PopUpPapIp" runat="server">
...
</asp:Panel>


Kita cukup tambahkan sebuah Panel Dummy kosong bernama "Panel_DummyLoh"
Lalu kita sembunyikan Panel "Panel_PopUpPapIp" dengan mengubah Visible nya menjadi false..
//WebPage.aspx
<AjaxControl:ModalPopupExtender ID="MPE1" 
 runat="server"
 TargetControlID="hiddenButton"
 PopupControlID="Panel_PopUpPapIp" />
<asp:Panel ID="Panel_DummyLoh" runat="server"></asp:Panel>

<asp:Panel ID="Panel_PopUpPapIp" runat="server" Visible="false">
...
</asp:Panel>


LALUUUUUU.. kita ubah PopupControlID nya untuk sementara ke "Panel_DummyLoh" :
//WebPage.aspx
<AjaxControl:ModalPopupExtender ID="MPE1" 
 runat="server"
 TargetControlID="hiddenButton"
 PopupControlID="Panel_DummyLoh" />

<asp:Panel ID="Panel_DummyLoh" runat="server">

<asp:Panel ID="Panel_PopUpPapIp" runat="server" Visible="false">
...
</asp:Panel>

Setelah ini beres.. Kita Search code untuk memunculkan ModalPopUpExtender ini..
//WebPage.aspx.cs
MPE1.Show();

Tambahkan Code ini untuk memasukkan kembali "Panel_PopUpPapIp" ke dalam Pop Up..
Ingat ditambahkan sebelum MPE1.Show lohhh... jadi setidaknya dimasukkan kembali sebelum pop up itu muncull...
//WebPage.aspx.cs
Panel_PopUpPapIp.Visible = true;
MPE1.PopupControlID = "Panel_PopUpPapIp";
MPE1.PopupDragHandleControlID = "Panel_PopUpPapIp";
MPE1.Show();

Solved.. Ahay..

Tidak ada komentar:

Posting Komentar