2012-02-01 1 views
0

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

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

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

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

ответ

1

Вы должны использовать ClientEnabled свойство (на стороне сервера) и SetEnabled метод (на стороне клиента). Не используйте свойство Enabled, потому что вы не можете включить редактор с Enabled == false на стороне клиента.
Как вы писали, у вас также есть проблема с этим решением. Трудно быть уверенным без источника, но вы должны проверить решение с ClientEnabled в разных браузерах.
Если он работает в IE и не работает в Chrome и FF, вы, вероятно, есть эта проблема:
ASPxComboBox lose value after a postback when the ClientEnabled property is false
ASPxTextBox ClientEnabled="false" loses value after postback
или даже это:
ASPxTextBox value gets lost if ClientEnabled property is false

+0

Хммм .... спасибо за ссылки. кажется, что это может быть нашей проблемой. мы используем сочетание обратных вызовов и обратных передач, и каждый раз, когда элементы управления (как текстовые, так и комбинированные) помечены как отключенный клиент, мы не получаем ничего на стороне сервера ... И мы тестируем в основном в Chrome или Firefox. .. Предложение по одной из приведенных выше ссылок состоит в том, чтобы включить элементы управления на стороне клиента перед обратной передачей ... Посмотрите на это и посмотрите, работает ли это ... Спасибо! – TiernanO

0

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

Для первых Comboboxes Init Event, Set Enabled = false для всех других comboboxes, что делает их клиентом отключенным (на стороне клиента). В методе 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> 
+0

спасибо за информацию ... но часть нашей проблемы является то, что когда элемент управления отмечен как отключенный клиент (SetEnabled (false)), мы не можем получить данные из него со стороны сервера ... – TiernanO

+0

Какую информацию вы говорите? если вы выполняете обратные вызовы с помощью AspxCallbackPanel, вы можете передать необходимые значения (используя методы ClientSide Comobobox) из ClientSide в качестве CallbackParameters. Если вы делаете иначе, вы можете использовать AspxHiddenField, который вы можете обновить на стороне клиента по мере необходимости и использовать значения HiddenField на стороне сервера. – Akhil

+0

Дополнительная информация о «получении данных на стороне сервера» поможет нам узнать вашу точную проблему. Какие данные? – Akhil