2014-01-30 13 views
1

Я, очевидно, не совсем понимаю, как работают веб-сайты.Checkbox.checked false in page_load

(Using vb.net, visual studio, web forms) Но здесь идет:

  1. Это нормально, что после каждой обратной передачи-Page_Load, другой Page_Load всегда бывает (что это НЕ постбэк)? Или это что-то странное на веб-сайте, который я сейчас адаптирую?

  2. Почему checkbox.checked-property всегда false в page_load, хотя проверяется, когда страница загружена?

Актуальная проблема: У меня есть страница с gridview, привязанная к набору данных. На странице_load я динамически добавляю несколько дополнительных столбцов в зависимости от определенных условий. (Я добавляю их, только если page_load не является обратной передачей.)

Теперь я добавил asp:checkbox. Если он установлен, я хочу, чтобы страница перезагружалась и добавляла столбцы, но несколько иначе (так что она редактировалась). Я попытался проверить checkbox.checked-property на page_load, но это то, что происходит: во-первых, я получаю postback-page_load, где checked-свойство истинно (как и следовало ожидать). Тем не менее, сразу после этого я получаю normal page_load, где свойство check false, хотя после загрузки страницы установлен флажок.

Поскольку я добавляю дополнительные столбцы normal Page_Load, а затем checked всегда ложно, столбцы всегда добавляется обычным способом ...

Может быть, я не должен добавлять столбцы в normal Page_Load но в postback или в обоих. Но как бы то ни было, добавление столбцов работает, и в этом случае, если я добавлю их в postback тоже, это не будет иметь никакого значения, потому что за ним всегда будет стоять normal page_load, в котором свойство checked false.

Что мне не хватает?

+1

Я не думаю, что Page_Load следует стрелять в два раза, у вас есть какие-либо элементы управления, обновите страницу самостоятельно? Кроме того, вы должны попробовать включить привязку к gridview в инструкции 'if (! IsPostBack)' (я не уверен в эквиваленте VB, извините!). Вы также можете попробовать использовать функцию AutoPostback флажка и использовать событие OnCheckedChanged. Вы можете перестроить gridview с дополнительными столбцами. – MightyLampshade

+0

Вы добавляете дополнительные столбцы в gridview - или набор данных? Я обнаружил, что, если я хочу, например, заголовки строк в сетке или дополнительный столбец при определенных обстоятельствах, я изменяю набор данных, а затем привязываю сетку. Если вы изменяете сетку, она, похоже, теряет свои модификации, когда вы отправляете назад, и вы должны их воссоздать. –

+0

Я добавляю их в сетку, а не в набор данных. На самом деле не имеет значения, я думаю, в этом случае, потому что регулярная page_load всегда следует обратной передаче, которая «сбрасывает» сетку. –

ответ

1

Просто убедитесь, что для свойства EnableViewState установлено значение TRUE, которое по умолчанию.

Состояние элементов управления сервером поддерживается в ViewState, поэтому проблема возникает, только если для этого свойства установлено значение FALSE.

И вы должны сделать ваши данные связывания с, если (не IsPostBack)

  Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load 
      Try 
       If Not IsPostBack Then 
        GetAllContentAnnouncement() 
       End If 
      Catch ex As Exception 

      End Try 
Смежные вопросы