我有一个 ListView ,它有一个嵌套 ListView ,其中在项目模板中包含 radcomboboxes。因此,ID(据我所知)对我来说毫无用处。
例如,如果我有 30 个项目,那么每个项目都会生成一个新的组合框,因此名称将由 asp.我需要的是能够从用户正在使用的任何组合框中获取选定的值。我目前正在使用 jQuery 和一些荒谬的 parent().parent().children()
输入无意义的内容,以便找到与提交按钮相关的正确组合框。
当单击提交按钮时,我需要它来查找其各自组合框的选定值,以便我可以将其发送到帖子提交处理程序。问题是.val()
jQuery 方法不起作用。当我将其与以下内容一起使用时:
$(this).parent().parent().children().children(".statusCbo").val();
我最终得到的是文本值,而不是选定的值。我进行了三次检查,以确保我在 aspx 文件中正确绑定(bind)了字段;
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
});
最佳答案
自从我处理 Telerik 控件以来已经有一段时间了,但是您所做的只是绕过了 Telerik 为您制作的 api,这让我觉得这是一件非常糟糕的事情。 Telerik Controls 的下一版本可能会轻易破坏您的代码。
看,从 ListView 传递客户端 ID 应该不难。我可以解决几种方法,但现在我会让您自己解决。一旦您获得了控件的 ClientID,请按照 telerik 网站上的示例进行操作:
一旦你有了这个ID,就可以做一些事情
var combo = $find(someVarReferencingTheId);
现在您可以在客户端表单中引用组合框。现在找到一些可以从这里得到你想要的功能:
http://www.telerik.com/help/aspnet-ajax/combobox-client-side-radcombobox.html
...
利润!
编辑:实际上根本不需要 demos.telerik.com 的第一个链接,我只是展示了这一点,因为这就是我用来获取该行代码的内容(我永远不记得它是否是 $get
或 $find
我需要使用,除非我当时正在做很多 Telerik 客户端的事情。)。
编辑2:$get
和$find
是ASP.NET构造,而不是Telerik的。
关于javascript - 如何使用 jquery 或 javascript 从 telerik radcombobox 获取选定的值? val() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9796255/