Как включить панель ASP.Net, когда она отключена при загрузке страницы?

У меня есть код, который отключает панель ASP.NET на 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, который проверяет обратную передачу, как это

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

в вашем методе Page_Load.

Каждый раз, когда происходит обратная передача, вызывается метод Page_Load, и если вы не проверите вышеуказанное условие, вы всегда получите uiPnlDetails.Enabled = False;.

Этот div, который вы упомянули, - это просто ваша визуализированная панель, ничего особенного. Панели отображаются браузерами как div.

person Bastardo    schedule 17.01.2012
comment
Я тоже это уже сделал. Но опять же, если это не обратная передача (страница загружается впервые), отключение панели отключит ее навсегда, даже если в поведении обратной передачи есть какой-то код, который ее включает. - person saber35; 18.01.2012
comment
@ saber35 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

Один лайнер

  • Если на вашей странице есть одна панель обновления, убедитесь, что все элементы управления, которые должны обновляться после обратной передачи, также должны быть на панели обновления.

Что я имею в виду здесь

  • Возможно, панель, которую вы включаете после щелчка, находится за пределами панели обновления. Поэтому оберните <asp.panel> внутри <asp.UpdatePanel> и убедитесь, что UpdateMode="Always".

Надеюсь это поможет.

person Sumit Kapadia    schedule 30.06.2013