checkaged не стреляет для checkbox asp.net - PullRequest
2 голосов
/ 18 июня 2010

У меня есть флажок для файла .ascx. Этот файл .ascx находится в веб-приложении с закрытым исходным кодом, и что-то препятствует запуску события checkaged каждый раз.

Когда я впервые загружаю страницу и устанавливаю флажок (проверяю ее) в первый раз, когда запускается событие checkked. Если я щелкну по нему во второй раз (снимите флажок), отмеченное событие не будет запущено. Если я проверяю это снова, событие запускается, и когда я снимаю галочку снова, оно не срабатывает и продолжается так же. Если я установлю значение по умолчанию для флажка в значение true, поскольку оно загружается, тот же эффект возникает, только когда он срабатывает, когда он не проверяется в первый раз, и не срабатывает, когда проверяется во второй раз и т. Д.

Страница, на которой находится этот .ascx, имеет значение EnableViewState, равное true, а также .ascx, и я даже пытался установить его на самом флажке. Флажок также имеет значение AutoPostBack, установленное на true.

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

Что в этом приложении может препятствовать запуску события checkked каждый раз?

Ответы [ 5 ]

2 голосов
/ 18 июня 2010

Хм, вы уверены, что нет других ошибок JavaScript?Также вы пытались добавить триггер, так как упомянули, что он находится внутри панели обновления?

<asp:UpdatePanel>
    <ContentTemplate>
       //Content
    </ContentTemplate>
    <Triggers> 
        <asp:AsyncPostBackTrigger ControlID="yourCheckBox"  /> 
    </Triggers>
</asp:UpdatePanel>

Обновление: пытались ли вы принудительно установить свойство autopostback через код

CheckBox checkbox = yourFormOrContainer.FindControl(yourCheckBox.ID) as CheckBox;
if(checkbox != null)
{
     checkbox.AutoPostBack = true;
}

Второе обновление: поMicrosoft: Элемент управления CheckBox должен сохранять некоторые значения между публикациями на сервере, чтобы это событие работало правильно.Убедитесь, что для этого элемента управления включено состояние просмотра.

Если вы сохраняете значение в базе данных, когда страница / панель обновлений отправляет ответ, вы возвращаете его значение, я подозреваю, что оно получает егостарое значение, так что он все еще думает, что его проверил и, следовательно, не стрельба.Если вы изначально находились внутри панели обновления, используете ли вы Bind для установки значения данных, предположительно, битового поля?

0 голосов
/ 17 марта 2015

настройка AutoPostBack = "True" у меня работает

0 голосов
/ 26 августа 2010

В настоящее время мы медленно переписываем приложение с помощью FubuMVC.У меня есть и fubu, и веб-формы, работающие параллельно, поэтому я смог переписать этот небольшой раздел, используя fubu, вместо того, чтобы больше тратить время на возмущение веб-формами для этой проблемы.

Я знаю, что для большинства этоЭто не вариант, но так я решил.

0 голосов
/ 26 августа 2010

Это стоит проверить, потому что у меня было похожих проблем .

Вы подтвердили, что проверили атрибут EnableViewState на своей странице и сам элемент управления. Однако ViewState происходит каскадно, поэтому, если ваш элемент управления находится внутри элемента управления, а для родительского элемента управления EnableViewState установлено значение false, то дочерний элемент управления, даже если для него включен ViewState, все равно не будет иметь ViewState.

У меня было множество вложенных элементов управления, и у одного из них был отключен ViewState, и он глючил меня часами.

0 голосов
/ 20 августа 2010

Это я размышляю: если бы я хотел иметь флажок, который бы вел себя таким образом (по какой-либо причине), я бы, вероятно, перегружал класс, а затем сохранял бы int (или состояние bool), который отслеживает / переключает все изменения событие всплывало только в том случае, если значение bool было истинным / значение int делилось на 2.

(Проверьте код http://odetocode.com/code/94.aspx и представьте оператор if в методе onclick, чтобы понять, что я имею в виду.)

Что касается хранения счетчика / переменной состояния, то, если она не находится в Viewstate, она может быть скрыта в ControlState, Session или даже в кэше приложения. (Кстати, попробуйте перечислить все эти, если вы еще не ...)

Опять же, это может быть наивно, но может ли быть так, что событие "unchecked" запускается отдельно - и должно обрабатываться в своем собственном обработчике? Я видел более глупые вещи ... Я думаю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...