PostBack ASPxComboBox не срабатывает в DevExpress при использовании в пользовательском редакторе свойств

Я работаю над приложением DevExpress XAF, где мне нужно определить одно из свойств бизнес-объекта с помощью редактора настраиваемых свойств, чтобы отобразить его в раскрывающемся списке, который заполняется из другого бизнес-объекта, как показано ниже:

[ImmediatePostData(true)]
[ModelDefault("PropertyEditorType", "CollateralSaleTypePropertyEditor")]
[Size(140)]
public string COLLATERAL_SALE_TYPE
{
    get { return GetPropertyValue<String>("COLLATERAL_SALE_TYPE"); }
    set
    {
        SetPropertyValue("COLLATERAL_SALE_TYPE", value);
        // OnChanged("COLLATERAL_REPOSSESSION_DATE");
    }
}

Кроме того, я определил CollateralSaleTypePropertyEditor и установил для AutoPostBack значение true: _dropDownControl.AutoPostBack = true;

Проблема, с которой я столкнулся, заключается в том, что эта обратная запись не происходит, и событие на стороне сервера SelectedIndexChanged не возникает:

//Server side event that is not raised
_dropDownControl.SelectedIndexChanged += control_SelectedIndexChanged;
//Client side event that is raised                   
_dropDownControl.ClientSideEvents.SelectedIndexChanged = "function (sender, e) { e.processOnServer=false;}";

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


person Kejsi Struga    schedule 12.10.2017    source источник


Ответы (1)


Думаю, решение вашей проблемы очевидно. Проблема в этой строке:

dropDownControl.ClientSideEvents.SelectedIndexChanged = 
                  "function (sender, e) { e.processOnServer=false;}";

Поскольку вы указали e.processOnServer=false, событие SelectedIndexChanged генерируется на стороне клиента, но не попадает на сервер.

Если вы хотите, чтобы SelectedIndexChanged достигла серверной стороны, вам нужно либо полностью удалить обработчик на стороне клиента, либо изменить его на e.processOnServer=true;.

person andrews    schedule 13.10.2017
comment
Эй, я решил это, и да, для свойства processingOnServer нужно было установить значение true, похоже, это проблема, в частности, элемента управления DropDown. - person Kejsi Struga; 16.10.2017
comment
@kejsiStruga рад, что это помогло!. Был бы признателен, если бы вы приняли ответ тогда. - person andrews; 16.10.2017