我有代码在Page_Load上禁用ASP.NET面板:
uiPnlDetails.Enabled = False;
然后我有网格,如果行点击它会引发事件以启用它。事件成功引发,因为我可以在块中的某个位置创建断点,并且还可以成功调用启用面板的语句。我发现Watch Watch窗口中的uiPnlDetail.Enabled值设置为True。
但页面上的结果:
<div disabled="disabled" id="ctl00_MainContent_uiPnlDetails">
因此div中的所有内容都被禁用。我已经检查了所有代码,但是在启用它之后,没有代码设置面板再次禁用。
如何调试此行为?
答案 0 :(得分:2)
我认为这将解决您的问题
If(!Page.IsPostBack)
{
uiPnlDetails.Enabled = False;
}
答案 1 :(得分:2)
你需要在if块中禁用Panel,它会像这样检查回发
if(!IsPostBack)
{
uiPnlDetails.Enabled = False;
}
在Page_Load
方法中。
每次发生回发时,都会调用Page_Load方法,如果您没有检查上述情况,则总是会以uiPnlDetails.Enabled = False;
结束。
你提到的那个div只是你渲染的面板,没什么特别的。面板被浏览器渲染为div。
答案 2 :(得分:1)
您可能需要验证是否在页面加载代码中检查了Page.IsPostBack == false
,因此在事件触发时它不会运行。
答案 3 :(得分:1)
更新UpdatePanel
时,页面将重新发布到服务器上。在Asp.Net中,您可以使用Page.IsPostBack
boolean
来识别它。现在,在页面加载检查IsPostBack
是否false
,然后只设置uiPnlDetails.Enabled = False;
在您的情况下,行点击事件正在发布页面,您将需要处理。
答案 4 :(得分:0)
一个班轮
我的意思是
<asp.panel>
包裹在<asp.UpdatePanel>
内,并确保UpdateMode =“Always”。希望这有帮助。