จะเปิดใช้งานพาเนล ASP.Net ได้อย่างไรเมื่อปิดใช้งานในการโหลดเพจ

ฉันมีรหัสที่ปิดการใช้งาน ASP.NET Panel บน Page_Load:

uiPnlDetails.Enabled = False;

จากนั้นฉันก็มีกริดซึ่งหากแถวคลิกมันจะทำให้เกิดเหตุการณ์เพื่อเปิดใช้งานอีกครั้ง เหตุการณ์นี้เกิดขึ้นได้สำเร็จ เพราะฉันสามารถสร้างเบรกพอยต์ที่ไหนสักแห่งในบล็อกได้ และคำสั่งที่เปิดใช้งานแผงควบคุมก็ถูกเรียกใช้สำเร็จเช่นกัน ฉันพบค่า uiPnlDetail.Enabled ในหน้าต่าง Watch ถูกตั้งค่าเป็น True

แต่ผลลัพธ์ในหน้า:

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

ดังนั้นทุกอย่างภายใน div จึงถูกปิดใช้งาน ฉันตรวจสอบโค้ดทั้งหมดแล้ว แต่ไม่มีโค้ดใดถูกตั้งค่าให้แผงควบคุมปิดใช้งานอีกครั้งหลังจากที่เปิดใช้งานแล้ว

ฉันจะแก้ไขพฤติกรรมนี้ได้อย่างไร


person saber35    schedule 17.01.2012    source แหล่งที่มา
comment
คุณมี UpdatePanel บนเพจหรือไม่?   -  person Claudio Redi    schedule 17.01.2012


คำตอบ (5)


ฉันคิดว่านี่จะช่วยแก้ปัญหาของคุณได้

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

คุณต้องปิดการใช้งานแผงในบล็อก if ซึ่งจะตรวจสอบ postback เช่นนี้

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

ในวิธี Page_Load ของคุณ

ทุกครั้งที่เกิดการ postback วิธี Page_Load จะถูกเรียก และหากคุณไม่ตรวจสอบเงื่อนไขข้างต้น คุณจะจบลงด้วย uiPnlDetails.Enabled = False; เสมอ

div ที่คุณพูดถึงเป็นเพียงพาเนลที่เรนเดอร์ของคุณ ไม่มีอะไรพิเศษ พาเนลถูกเรนเดอร์เป็น div ตามเบราว์เซอร์

person Bastardo    schedule 17.01.2012
comment
ฉันก็ทำอย่างนั้นเหมือนกัน แต่ขอย้ำอีกครั้งว่า หากไม่ใช่ postback (โหลดหน้าเว็บครั้งแรก) การปิดใช้งานแผงจะทำให้ปิดใช้งานตลอดไป แม้ว่าจะมีโค้ดบางส่วนเกี่ยวกับพฤติกรรม Postback ที่เปิดใช้งานก็ตาม - person saber35; 18.01.2012
comment
@ saber35 ที่ดูเหมือนไม่ใช่ปัญหาธรรมดาสำหรับฉัน คุณช่วยเพิ่มรหัสลงในคำถามของคุณได้ไหม และเกี่ยวกับแผงอัปเดตนั้น มันอาจเป็นเหตุผล คุณลองมันโดยไม่ใช้มันได้ไหม - person Bastardo; 18.01.2012

คุณอาจต้องตรวจสอบให้แน่ใจว่าคุณได้ตรวจสอบ Page.IsPostBack == false ในโค้ดการโหลดหน้าเว็บของคุณแล้ว ดังนั้นโค้ดจะไม่ทำงานเมื่อเหตุการณ์เริ่มทำงาน

person Rikard Uppström    schedule 17.01.2012

เมื่อมีการอัปเดต UpdatePanel เพจจะถูกโพสต์กลับบนเซิร์ฟเวอร์ ใน Asp.Net คุณสามารถระบุได้โดยใช้ Page.IsPostBack ซึ่งก็คือ boolean ขณะนี้ในการโหลดหน้าเว็บ ให้ตรวจสอบว่า IsPostBack เป็น false หรือไม่ จากนั้นให้ตั้งค่าเฉพาะ uiPnlDetails.Enabled = False;

ในกรณีที่แถวเหตุการณ์คลิกของคุณกำลังโพสต์เพจ คุณจะต้องจัดการสิ่งนี้

person Amar Palsapure    schedule 17.01.2012

หนึ่งในสายการบิน

  • หากคุณมีแผงอัปเดตหนึ่งแผงในเพจของคุณ ตรวจสอบให้แน่ใจว่าการควบคุมทั้งหมดที่คาดว่าจะอัปเดตหลัง postback ควรอยู่ในแผงอัปเดตด้วย

สิ่งที่ฉันหมายถึงที่นี่คือ

  • อาจเป็นกรณีที่แผงที่คุณเปิดใช้งานหลังจากการคลิกอยู่นอกแผงอัปเดต ดังนั้นห่อ <asp.panel> ไว้ข้างใน <asp.UpdatePanel> และตรวจสอบให้แน่ใจว่า UpdateMode="Always"

หวังว่านี่จะช่วยได้

person Sumit Kapadia    schedule 30.06.2013