Bagaimana cara mengaktifkan panel ASP.Net ketika dinonaktifkan saat memuat halaman?

Saya memiliki kode yang menonaktifkan Panel ASP.NET di Page_Load:

uiPnlDetails.Enabled = False;

Lalu saya memiliki kisi yang jika baris diklik akan memunculkan acara untuk mengaktifkannya kembali. Acara berhasil dimunculkan, karena saya dapat membuat breakpoint di suatu tempat di blok, dan pernyataan yang mengaktifkan panel juga berhasil dipanggil. Saya menemukan nilai uiPnlDetail.Enabled di jendela Watch diatur ke True.

Tapi hasilnya di halaman:

<div disabled="disabled" id="ctl00_MainContent_uiPnlDetails">

Jadi semua yang ada di dalam div dinonaktifkan. Saya sudah memeriksa semua kode, tetapi tidak ada kode yang mengatur panel untuk dinonaktifkan lagi setelah saya mengaktifkannya.

Bagaimana cara men-debug perilaku ini?


person saber35    schedule 17.01.2012    source sumber
comment
Apakah Anda memiliki UpdatePanel di halaman tersebut?   -  person Claudio Redi    schedule 17.01.2012


Jawaban (5)


Saya pikir ini akan menyelesaikan masalah Anda

If(!Page.IsPostBack)
{
uiPnlDetails.Enabled = False;
}
person Bibhu    schedule 17.01.2012

Anda perlu menonaktifkan Panel di blok if yang memeriksa postback seperti ini

if(!IsPostBack)
{
  uiPnlDetails.Enabled = False;
}

dalam metode Page_Load Anda.

Setiap kali postback terjadi, metode Page_Load dipanggil dan jika Anda tidak memeriksa kondisi di atas, Anda akan selalu berakhir dengan uiPnlDetails.Enabled = False;.

Div yang Anda sebutkan hanyalah panel yang dirender, tidak ada yang istimewa. Panel dirender sebagai div oleh browser.

person Bastardo    schedule 17.01.2012
comment
Saya sudah melakukannya juga. Namun sekali lagi, jika ini bukan postback (halaman pertama kali dimuat), menonaktifkan panel akan menonaktifkannya selamanya, meskipun ada beberapa kode pada perilaku postback yang mengaktifkannya. - person saber35; 18.01.2012
comment
@ saber35 bagi saya sepertinya bukan masalah biasa, bisakah Anda menambahkan kode ke pertanyaan Anda? Dan tentang panel pembaruan itu, mungkin itu alasannya, bisakah Anda mencobanya tanpa itu? - person Bastardo; 18.01.2012

Anda mungkin perlu memverifikasi bahwa Anda memeriksa Page.IsPostBack == false di kode pemuatan halaman Anda, sehingga tidak berjalan saat acara diaktifkan.

person Rikard Uppström    schedule 17.01.2012

Kapan pun UpdatePanel diperbarui, halaman diposting kembali di server. Di Asp.Net Anda dapat mengidentifikasinya menggunakan Page.IsPostBack yang merupakan boolean. Sekarang saat memuat halaman, periksa apakah IsPostBack adalah false lalu setel saja uiPnlDetails.Enabled = False;

Dalam kasus Anda, acara baris yang diklik memposting halaman, ini harus Anda tangani.

person Amar Palsapure    schedule 17.01.2012

Satu kapal

  • Jika Anda memiliki satu panel pembaruan di halaman Anda, pastikan semua kontrol yang seharusnya diperbarui setelah postback juga harus ada di panel pembaruan.

Yang saya maksud di sini adalah

  • Mungkin panel yang Anda aktifkan setelah klik berada di luar panel pembaruan. Jadi bungkus <asp.panel> itu di dalam <asp.UpdatePanel> dan pastikan bahwa UpdateMode="Always".

Semoga ini membantu.

person Sumit Kapadia    schedule 30.06.2013