ASP.NET: событие DropDownList onIndexChanged не запускается - PullRequest
0 голосов
/ 20 февраля 2010

У меня есть веб-страница, унаследованная от главной страницы. На веб-странице есть DropDownList (DDL), к которой прикреплено событие OnIndexChanged.

Проблема просто в том, что событие не запускается, даже если происходит обратный вызов (и вызываются page_load() события) ..

Я провел некоторый поиск и прочитал, что если для viewstate страницы установлено значение false, это вызовет аналогичную проблему, и проверил главную страницу (хотя у меня нет доступа к ее изменению), но обнаружил, что она установлена ​​в false, будет причина ?

Также возможно установить viewstate = true на веб-странице (наследуемой странице)? будет ли он переопределять оригинал viewstate = false на главной странице?

РЕДАКТИРОВАТЬ:

DDL отображается (с использованием Ajax), когда кнопка нажата, поэтому изначально (для Page_load () DDL.visible = false, но в событии button_click() я устанавливаю DDL.visible = true, который также заполняет устройство чтения данных, которое связывается DDL.

Ответы [ 3 ]

2 голосов
/ 20 февраля 2010

Установлено ли свойство DDL AutoPostBack в значение true?

1 голос
/ 20 февраля 2010

Выполняете ли вы вручную Databind () в методе Page_Load ()? В этом случае событие OnIndexChanged будет потеряно. (Поэтому решение было бы не связывать при обратной передаче)

Редактировать (после уточнения вопроса): Я думаю, что PostBackTrigger поможет вам найти желаемое решение.

0 голосов
/ 20 февраля 2010

Есть несколько очевидных вещей, которые нужно проверить. Следующие 3 вещи должны быть правильно настроены для вашей страницы в директиве страницы вверху страницы.

AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" 

Далее в управляющей разметке <asp:DropDownList необходимо заполнить все эти атрибуты

ID="DropDownList1" runat="server" AutoPostBack="True" 
        onselectedindexchanged="DropDownList1_SelectedIndexChanged"

Тогда, наконец, у вас должен быть соответствующий обработчик для события в вашем коде

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

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

Если ни один из этих способов не поможет создать новую страницу, скопировать и вставить в нее свой код, затем создайте и запустите снова.

...