Как использовать JQuery или Javascript, чтобы получить выбранное значение из Telerik Radcombobox? val () не работает - PullRequest
2 голосов
/ 21 марта 2012

У меня есть просмотр списка, который имеет вложенный просмотр списка, который содержит radcomboboxes в шаблоне элемента.Таким образом, идентификаторы (насколько я знаю) для меня бесполезны.

Например, если у меня есть 30 элементов, каждый из этих элементов будет генерировать новый комбинированный список, поэтому имена будутгенерируется асп.Что мне нужно, так это уметь извлекать выбранное значение из любого выпадающего списка, который обрабатывает пользователь.В настоящее время я использую jQuery и какую-то абсурдную ерунду типа parent().parent().children(), чтобы найти правильный комбинированный список по отношению к кнопке отправки.

Когда нажата кнопка отправки, мне нужно найти выбранное значение соответствующего поля со списком, чтобы я мог отправить его в обработчик отправки сообщения.Проблема в том, что метод .val() jQuery не работает.Когда я использую это с чем-то вроде:

$(this).parent().parent().children().children(".statusCbo").val();

, я получаю текстовое значение, а не выбранное значение.Я трижды проверил, чтобы убедиться, что у меня были правильно связаны поля в файле aspx;

DataTextField = '<%#Eval("name") %>' DataValueField = '<%#Eval("id") %>'

Но, как я уже сказал, я получаю значение DataTextField для выбранного элемента.Лучшее объяснение, которое я мог получить, было то, что это было как-то связано с тем, как элемент управления запрашивает контент (через ajax).

Так что, во всяком случае, кто-нибудь может предложить несколько советов о том, как точно получить выбранное значениеиз поля со списком?

ОБНОВЛЕНИЕ: я смог получить ссылку на объект с помощью другого средства:

$(".submitTag").click(
        function () {
            var topLevel = $(this).closest(".CommentTopLevel");
            var status = topLevel.find(".StatusTag").get_value();                   

            //stub to test value
            alert(status);
            return false;
        });

отсюда, если использовать status.val (), он даст мнетекст вместо значения (та же проблема, что и раньше).Документация подразумевает, что я должен использовать status.get_value ();но это взрыв, говоря, что метод не поддерживается от объекта.Есть идеи?

ОБНОВЛЕНИЕ: не важно, я обнаружил, что это возвращаемый объект jquery, поэтому метод не включен.Продолжая копать.

РЕШЕНИЕ : Был только дополнительный шаг, который мне нужно было сделать, чтобы использовать традиционные методы.Я не знаю, что потребовалось так много времени, чтобы это щелкнуло со мной:

1 Ответ

2 голосов
/ 21 марта 2012

Прошло немного времени с тех пор, как я имел дело с элементами управления Telerik, но то, что вы делаете, это игнорирование apis, созданного Telerik для вас, и это выглядит как очень плохая вещь, Следующая версия Telerik Controls может легко сломать ваш код.

Смотри, не должно быть так сложно передать идентификатор клиента из списка. Есть несколько методов, которыми я бы воспользовался, но сейчас я позволю вам понять это самостоятельно. Если у вас есть ClientID для элемента управления, следуйте примеру на сайте telerik:

http://demos.telerik.com/aspnet-ajax/combobox/examples/programming/addremovedisableitemsclientside/defaultcs.aspx

Как только вы получите этот идентификатор, сделайте

var combo = $find(someVarReferencingTheId); 

Теперь у вас есть ссылка на выпадающий список в его форме клиента. Теперь найдите некоторую функцию, которая получает то, что вы хотите отсюда:

http://www.telerik.com/help/aspnet-ajax/combobox-client-side-radcombobox.html

...

PROFIT!

РЕДАКТИРОВАТЬ: эта первая ссылка на demos.telerik.com на самом деле даже не нужна, я просто показал это, потому что это то, что я использовал, чтобы получить эту строку кода (я никогда не мог вспомнить, если это $get или $find Мне нужно было использовать, если в то время я не делал много клиентских вещей Telerik.).

EDIT 2: $get и $find являются конструкциями ASP.NET, а не Telerik.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...