Rabu, 19 Oktober 2011

Error : PageRequestManagerParserErrorException

Pernahkah anda membuat sebuah tombol Print yang Generate Excel???

Lalu pernahkah anda mengalami sebuah error yg muncul ketika tombol Print Generate Excel itu ditekan..???
Yang berisi pesan kira2 seperti ini :
"blablablablablabla PageRequestManagerParserErrorException blablablablablablabla"

(Gw lupa bagian yg blablablabla nya.. LOL)

Klo anda tidak pernah mengalami error seperti ini, tetap lanjutkan membaca, karena sapa tau dibutuhkan kelak.. huahahahaha..

Error PageRequestManagerParserErrorException biasanya tuh terjadi karena metode generate file yg kita lakukan itu menggunakan Response.Write() DAN tombol untuk menggenerate file tersebut ada di dalam UpdatePanel...


Kira2 kejadiannya kayak gini nih :

<asp:UpdatePanel ID="updtepnl" runat="server">
    <ContentTemplate>
...
        <asp:Button ID="Si_tombol" OnClick="Si_tombol_Click" runat="server" 
        Text="Tekan Daku untuk Export Excel" />
...
    </ContentTemplate>
</asp:UpdatePanel>

Cara kerja Response.Write() itu kan menulis ulang HTML yg di request..
Babysitter : Jadi ketika si Tombol Tersangka itu diklik, maka dya akan menggunakan sihir untuk menciptakan konten baruu.. Tapi si Tombol malang itu tidak menyadari bahwa dirinya berada di dalam sebuah UpdatePanel..

Anak TK : Memangnya si UpdatePanel itu melakukan hal jahat apa??

Babysitter : Yah.. UpdatePanel itu mengambil konten yg di generate oleh si tombol dan memasukkan nya hanya di UpdatePanel itu saja..
Akibatnya Header dari konten tersebut tidak berada di paling awal..

Anak TK : gak mudeng saya.. :(


Yak! pokoke begitu lah ceritanya.. Error itu terjadi karena si Tombol Gaul itu berada di dalam UpdatePanel.. Dan Tombol Gaul itu memanggil metode Response.Write()

Untuk solusinya cukup mudah..
Kita cukup tambahkan sebuah TRIGGER yg akan membuat si UpdatePanel melakukan PostBack ulang ke seluruh halaman..

Tambahin nya itu di UpdatePanel yg terkait lohhh.. Jangan dipasang di Update Panel tersangka..


Solusi nya seperti ini :


<asp:UpdatePanel ID="updtepnl" runat="server">
    <ContentTemplate>
...
        <asp:Button ID="Si_tombol" OnClick="Si_tombol_Click" runat="server" 
        Text="Tekan Daku untuk Export Excel" />
...
    </ContentTemplate>
    <Triggers>
        <asp:PostBackTrigger ControlID="Si_tombol" />
    </Triggers>
</asp:UpdatePanel>

Voilaaaa.. Akhirnya si Tombol dan UpdatePanel hidup berbahagia selamanya.. Happily Ever After..

Tidak ada komentar:

Posting Komentar