如何使用jquery或javascript从telerik radcombobox获取选定的VALUE? val()无效

时间:2012-03-20 22:53:49

标签: javascript jquery asp.net telerik

我有一个listview,它有一个嵌套的listview,它包含itemtemplate中的radcomboboxes。因此,ID(据我所知)对我来说毫无用处。

例如,如果我有30个项目,那么每个项目都将生成一个新的组合框,因此名称将由asp生成。我需要的是能够从用户正在使用的组合框中获取所选值。我目前正在使用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对象,所以该方法不包括在内。继续挖掘。

: 我需要采取额外的步骤来使用传统方法。我不知道它花了多长时间与我点击:

$(".submitTag").click(
    function(){
        var topLevel = $(this).closest(".CommentTopLevelTag"); //gets the parent container
        var comboBoxID = topLevel.find(".StatusTag").attr("ID"); //gets the clientID of the jQuery object
        var comboBoxRef = $find(comboBoxID); //finds the control by id and brings back a non-jQuery object (useable)
        var comboBoxSelectedValue = comboBoxRef.get_value(); //uses the Telerik method to get the selected value
    });

1 个答案:

答案 0 :(得分:2)

自从我处理Telerik控件以来已经有一段时间了,但你正在做的是绕过Telerik为你使用的api,这让我觉得非常糟糕。 Telerik Controls的下一个版本可能会轻易破坏您的代码。

看,从listview传递客户端ID应该不难。有几种方法我会解决,但我现在就让你自己解决这个问题。获得控件的ClientID后,请按照telerik网站上的示例进行操作:

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

一旦你有了id,就做一些

var combo = $find(someVarReferencingTheId); 

现在,您可以在客户端表单中引用组合框。现在找到一些从这里得到你想要的功能:

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

...

PROFIT!

编辑:第一个链接到demos.telerik.com甚至不需要,我只是表明,因为那是我以前用来获取那行代码(我永远不会记得它是$get还是{ {1}}我需要使用,除非我当时做了很多Telerik客户端的事情。)。

编辑2:$find$get是ASP.NET构造,而不是Telerik。