Каскадный ASPxComboBox, помечающий предыдущие поля как "неактивные" - PullRequest
0 голосов
/ 01 февраля 2012

Я работал над проблемой последние пару дней с несколькими DevExpress ASPxComboBoxes.Когда страница загружается, есть 5 полей.первый имеет выбираемые значения, а остальные должны быть «неактивными».Когда активный блок меняет значение, он должен запустить следующий комбинированный список, получить его для загрузки данных и деактивировать предыдущий блок.

Мы используем смесь JavaScript и серверного сайта ASP.NET.Проблема, с которой мы сталкиваемся:

  • когда мы помечаем элемент управления как Client Disabled (со стороны сервера), мы не можем получить из него данные со стороны сервера ...
  • когда мы помечаем элемент управления как Disabled (со стороны сервера), мы не можем получить данные из него с любой стороны ...
  • когда мы помечаем элемент управления как Disabled с помощью Java Script, мы получаем ту же проблему, что и Client Disabledсо стороны сервера ...
  • когда мы помечаем элемент управления как ReadOnly, мы не можем «не читать его» со стороны клиента!

мы хотим иметь возможность отмечать дочерние элементы управлениякак неактивные (только для чтения или отключенные), а затем повторно активировать их по мере подъема по стеку ... нам также необходимо иметь возможность очистить стек (который в настоящее время работает в JavaScript, но элементы управления по-прежнему "активны")).Есть идеи?

Ответы [ 2 ]

1 голос
/ 02 февраля 2012

Вы должны использовать свойство ClientEnabled (на стороне сервера) и метод SetEnabled (на стороне клиента). Не используйте свойство Enabled, потому что вы не можете включить редактор с Enabled == false на стороне клиента.
Как вы писали, у вас есть проблема с этим решением. Трудно быть уверенным без источника, но вы должны проверить решение с ClientEnabled в разных браузерах.
Если он работает в IE и не работает в Chrome и FF, у вас, вероятно, есть эта проблема:
ASPxComboBox теряет значение после обратной передачи, когда свойство ClientEnabled имеет значение false
ASPxTextBox ClientEnabled = "false" теряет значение после обратной передачи
или даже это:
Значение ASPxTextBox теряется, если свойство ClientEnabled имеет значение false

0 голосов
/ 01 февраля 2012

Вы можете использовать Client-side Events AspxComboBox для этого.

Для первых комбинированных списков Init Event, установите Enabled = false для всех остальных комбинированных списков, что делает их отключенными клиентом (на стороне клиента). В методе Clientside SelectedIndexChanged каждого из комбинированных списков вы можете включить любой комбинированный список в соответствии с вашей бизнес-логикой. Грубый образец, как показано ниже:

 <dxe:ASPxComboBox ID="FirstCombobox" ...... >
      <ClientSideEvents Init="function(s, e){SecondComboBox.SetEnabled(false); ... FifthComboBox.SetEnabled(false);}" 
                        SelectedIndexChanged="function(s, e){SecondComboBox.SetEnabled(true); //or whatever your logic is}" >
    </dxe:ASPxComboBox>

    <dxe:ASPxComboBox ID="SecondComboBox" ClientInstanceName="SecondComboBox" ...... >
    </dxe:ASPxComboBox>
    ..
    ..
    ..
    <dxe:ASPxComboBox ID="FifthComboBox" ClientInstanceName="FifthComboBox" ...... >
    </dxe:ASPxComboBox>
...