Вызов метода динамической переменной JavaScript

Я должен использовать динамическое именование для элемента DevExpress MVC DropDownEdit, потому что я использую частичное представление несколько раз в представлении. Я пытаюсь использовать следующий JavaScript:

<script type="text/javascript">
    var textSeparator = ";";
    function UpdateText(listBox, args) {
        var listBoxName = listBox.name;
        var locDropDown = document.getElementById("printOutDropDown" + listBoxName);
        if (locDropDown != null && locDropDown !== undefined) {
            alert('I am in');
            locDropDown['SetText'](listBox.GetSelectedItem().text);
            locDropDown['HideDropDown']();
        }
       
    }

Где SetText и HideDropDown — это специальные функции DevExpress SetText HideDropDown

Я всегда получаю сообщение об ошибке: Объект не поддерживает свойство или метод «SetText», который я пытался использовать:

locDropDown.SetText(...
locDropDown().SetText(...
locDropDown()['SetText']...

Ничего не работает. Может ли кто-нибудь дать мне совет, как решить эту проблему?

Дополнительная информация: 1) Когда я даю элементу управления определенное имя и просто использую его один раз, все работает плавно 2) Предупреждение поднимается, поэтому locDropDown определенно не является нулевым или неопределенным.

СПАСИБО


person Zero-G.    schedule 16.04.2017    source источник
comment
Привет снова. Я нашел решение, но не понимаю, почему работает eval()... ‹script type=text/javascript› function UpdateText(listBox, args) { var listBoxName = listBox.name; var locDropDownName = printOutDropDown + listBoxName; var locDropDown = document.getElementById (printOutDropDown + listBoxName); if (locDropDown!= null && locDropDown!== undefined) { eval(locDropDownName).SetText(listBox.GetSelectedItem().text); eval(locDropDownName).HideDropDown(); } }   -  person Zero-G.    schedule 16.04.2017


Ответы (1)


Предполагая, что locDropDown является элементом управления DevExpress.

Способ получить элемент управления — использовать функции сбора клиентских элементов управления:

var locDropDown = 
ASPxClientControl.GetControlCollection().GetByName("printOutDropDown" + listBoxName)

Затем вы сможете использовать функции JavaScript DevExpress для этого элемента управления (например, SetText() и т. д.).

person Muzzman    schedule 29.05.2017