Как отключить комбинированный список DevExpress MVC с клиента (JS / JQuery) - PullRequest
2 голосов
/ 18 февраля 2012

Я пытаюсь отключить форму, основанную на событии.У меня есть сценарий JQuery, который отключит все входные данные для таблицы / div и т. Д. Однако комбинированный список DevExpress по-прежнему позволяет пользователям выбирать опцию.Часть ввода элемента управления показывает отключенной, однако кнопка выбора и раскрывающийся список все еще работают.

Будучи новичком в клиентском API и Jquery DevExpress, мой вопрос: как я могу отключить элемент управления с помощью JQuery вспособ, который кросс-браузер совместим?

Вот что у меня сейчас есть

// Код JQuery

// Disable all input types in the table
$('#addressTable :input').attr('disabled', true);

// Disable DevExpress MVC Combobox  **(Fails)**
$('#StateProvinceType.StateProvinceTypeId').SetEnabled(false); 

// Код расширения HTML

@Html.DevExpress().ComboBox(settings =>
{
   settings.Properties.DropDownStyle = DropDownStyle.DropDown;
   settings.Name = "StateProvinceType.StateProvinceTypeId";
   settings.Properties.ValueType = typeof(int);
}).BindList(Model.States).GetHtml()

Ответы [ 2 ]

4 голосов
/ 20 февраля 2012

Когда свойство Name / ClientInstanceName отделено точкой, необходимо извлечь его из объекта "window" через " ASPxClientControl.GetControlCollection (). Метод GetByName ()"(из-за особенностей JavaScript). Не забудьте включить клиентский API:

@Html.DevExpress().ComboBox(settings => {
    settings.Name = "StateProvinceType.StateProvinceTypeId";

    settings.Properties.Items.Add("1", "1");
    settings.Properties.Items.Add("2", "2");
    settings.Properties.Items.Add("3", "3");

    settings.Properties.EnableClientSideAPI = true;
}).GetHtml()

<input type="button" onclick="OnClick();" value="Toggle" />

<script type="text/javascript">
    var enabled = true;

    function OnClick() {
        var comboBox = ASPxClientControl.GetControlCollection().GetByName("StateProvinceType.StateProvinceTypeId");
        comboBox.SetEnabled(!enabled);
        enabled = !enabled;
    }
</script>

В противном случае программный объект на стороне клиента доступен непосредственно в глобальном контексте:

@Html.DevExpress().ComboBox(settings => {
    settings.Name = "comboBox";

    settings.Properties.Items.Add("1", "1");
    settings.Properties.Items.Add("2", "2");
    settings.Properties.Items.Add("3", "3");

    settings.Properties.EnableClientSideAPI = true;
}).GetHtml()

<input type="button" onclick="OnClick();" value="Toggle" />

<script type="text/javascript">
    var enabled = true;

    function OnClick() {
        comboBox.SetEnabled(!enabled);
        enabled = !enabled;
    }
</script>
0 голосов
/ 19 февраля 2012

Когда у идентификатора есть точка, вам нужно использовать двойную обратную косую черту.Поэтому вам нужно изменить:

$('#StateProvinceType.StateProvinceTypeId')

Для:

$('#StateProvinceType\\.StateProvinceTypeId')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...