如何在页面加载时禁用ASP.Net面板?

时间:2012-01-17 12:46:39

标签: asp.net panel

我有代码在Page_Load上禁用ASP.NET面板:

uiPnlDetails.Enabled = False;

然后我有网格,如果行点击它会引发事件以启用它。事件成功引发,因为我可以在块中的某个位置创建断点,并且还可以成功调用启用面板的语句。我发现Watch Watch窗口中的uiPnlDetail.Enabled值设置为True。

但页面上的结果:

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

因此div中的所有内容都被禁用。我已经检查了所有代码,但是在启用它之后,没有代码设置面板再次禁用。

如何调试此行为?

5 个答案:

答案 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)

  

一个班轮

  • 如果您的页面中有一个更新面板,那么请确保所有在回发后都要更新的控件也应该在更新面板中。
  

我的意思是

  • 可能是您在点击后启用的面板位于updatepanel之外。所以将<asp.panel>包裹在<asp.UpdatePanel>内,并确保UpdateMode =“Always”。

希望这有帮助。