Выпадающий список asp.NET в пользовательском элементе управления не запускает событие SelectedIndexChanged

Asp.Net 2.0 framewrok - приложение VB.Net У меня есть UserControl, содержащий Asp.Net DropDownList.

Вещи, которые уже исследованы и \ или опробованы:

  • Элемент управления привязывается к данным при загрузке страницы внутри, если не Page.IsPostBack (загружается только один раз)
  • Свойство ID установлено для управления (ID = ddlMyControl)
  • AutoPostBack имеет значение true
  • EnableViewState для элемента управления имеет значение true
  • AutoEventWireUp в объявлении UserControl имеет значение true
  • EnableEventValidation имеет значение false на родительской странице

Элемент управления не вызовет событие SelectedIndexChanged, что бы я ни делал. ПОМОЩЬ !!

Спасибо :)


person Jim Evans    schedule 25.02.2010    source источник


Ответы (6)


У меня возникла аналогичная проблема, потому что я оставил AutoPostBack = "true" вне определения элемента управления. В своем исходном сообщении вы сказали, что пробовали это, но опубликованный код:

<uc3:TheControl ID="ucMyControl" runat="server" />

не отражает свойство AutoPostBack. Я добавил это к себе, и это решило мою проблему. Надеюсь, это поможет.

person Jason    schedule 17.07.2011
comment
Отличный момент - я установил autopostback = true в раскрывающемся списке, но не в пользовательском элементе управления, который его содержит. Я попробую. - person Jim Evans; 21.07.2011
comment
@Jason Вы имеете в виду, просто добавляя свойство в uc? Потому что я пробовал <uc1:Header ID="head1" runat="server" AutoPostBack="true" />, и у меня это не сработало. Я считаю, что у меня точно такая же настройка, как и у OP. :( - person Chiramisu; 29.01.2013

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

Я предполагаю, что вы хотите запустить SelectedIndexChanged Событие DropDownList, которое уже связано с некоторыми данными!
Например [C #]

ddlMyDropDown.DataSource = listOfCustomers;
ddlMyDropDown.DataTextField = "CustomerName";
ddlMyDropDown.DataValueField = "CustomerID";
ddlMyDropDown.DataBind();
ddlMyDropDown.CauseValidation = false;

Я предполагаю, что вы используете asp.net (последняя версия) ... может быть, 4.0.

person iTeach    schedule 08.07.2011
comment
где здесь ответ? - person mmssaann; 23.10.2013

Насчет "окружающей" страницы. Вы можете попробовать свой UserControl на другой странице?

Как добавить обработчик событий? Как включить контроль использования? (Когда через код, может быть, слишком поздно?)

Может быть, вы могли бы показать какой-нибудь код ;-)

person Robert    schedule 25.02.2010
comment
Добавил код в ответ выше, чтобы я мог использовать блок кода. - person Jim Evans; 26.02.2010

UserControl не загружается динамически, но добавляется на родительскую страницу во время разработки в HTML страницы.

<uc3:TheControl ID="ucMyControl" runat="server" />

Обработчик событий закодирован в коде самого UserContorl - стандартные вещи:

 Protected Sub ddlMyThing_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlMyThing.SelectedIndexChanged
    'Do event stuff here.
End Sub
person Jim Evans    schedule 25.02.2010
comment
Я считаю, что было бы лучше расширить исходный вопрос, чтобы сделать его нитью общения ... - person Robert; 25.02.2010
comment
Нет - автопостбек вообще не срабатывает - я устанавливаю точки останова при отладке как при загрузке страницы, так и в обработчике событий SelectIndexChanged, и приложение просто пролетает мимо, не останавливаясь, когда я выбираю новый элемент в DropDownList. Однако нажатие кнопки в том же пользовательском элементе управления ДЕЙСТВИТЕЛЬНО срабатывает - теперь давайте разберемся :) - person Jim Evans; 25.02.2010
comment
Я не совсем понимаю, что вы имеете в виду, расширяя вопрос на тему общения, но если вы скажете мне, как ... - person Jim Evans; 25.02.2010
comment
На самом деле - похоже, на странице есть ошибка javascript: this.getelement (). Style имеет значение null или не установлено. После этого в Google это похоже, связано с Asp.Net AJAX Toolkit, который здесь используется. Но решения не нашел. - person Jim Evans; 26.02.2010

Вы установили свойство onselectedindexchanged="ddlMyThing_SelectedIndexChanged" для ddl?

person Ahmad    schedule 25.02.2010
comment
Нет - в обработчике событий есть атрибут handles. Protected Sub ddlMyThing_SelectedIndexChanged (ByVal sender As Object, ByVal e As System.EventArgs) Обрабатывает здесь ddlMyThing.SelectedIndexChanged. Конец подписки - person Jim Evans; 26.02.2010

Я думаю, вам нужно установить для EnableEventValidation значение True.

Проверь это.

http://www.experts-exchange.com/Programming/Languages/.NET/ASP.NET/Q_22405007.html

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

Спасибо,

Раджа

person Raja    schedule 25.02.2010
comment
Я не буду платить этому сайту за ответ :) - при этом, EnableEventValidation истинно по умолчанию, если не объявлено и обратная передача не выполнялась. В одной из статей, которые я нашел в своем исследовании, было решение той же проблемы, установив для нее значение false, но это не сработало для меня. - person Jim Evans; 25.02.2010