Javascript从数组中填充Telerik MVC组合框

时间:2013-01-07 02:50:44

标签: c# asp.net-mvc json combobox telerik-mvc

我的应用程序是MVC4;我试图用json填充Telerik MVC,结果是一个数组;但是我只得到一件物品;这是我的剧本:

  function CheckWord() {
        var wordtocheck = $('#Cword').val();
        alert(wordtocheck);
        $.ajax({
            url: '/Home/CheckWord',
            type: 'POST',
            data: {
                cword: wordtocheck
            },
            success: function (data) {
                for (var i = 0; i < data.array.length; ++i) {
                    var myString = data.array[i];
                    var mySplitResult = myString.split("-->");
                    var hms = mySplitResult[0];
                    var a1 = hms.split(',');
                    var a2 = a1[0];
                    var a = a2.split(':');
                    var start = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]);
                    var hms1 = mySplitResult[1];
                    var b1 = hms1.split(',');
                    var b2 = b1[0];
                    var b = b2.split(':');
                    var end = (+b[0]) * 60 * 60 + (+b[1]) * 60 + (+b[2]);
                    var dropDownList = $('#ComboBox').data('tComboBox');
                     dropDownList.dataBind([
                     { Text: start[i] + "-" + end[i], Value: start[i] + "-" + end[i] }]);
                     dropDownList.select(0);
                }
            },
            error: function () {

            }
        });

当我在开始和结束后添加[i]时,我得到了未定义!没有[我]我得到正确的值,但只有一个项目。非常感谢您的建议,谢谢。

2 个答案:

答案 0 :(得分:0)

希望以下链接有所帮助

http://www.telerik.com/community/forums/aspnet-ajax/mvc/radcombobox-populate-on-client-side.aspx

在这里你可以看到

<telerik:RadComboBox ID="radProject" runat="server" Skin="Default" Width="300px" 
EnableLoadOnDemand="true" Filter="Contains" OnClientItemsRequesting="getProjects" 
EmptyMessage="Select Project" /> 

在上面的代码中,EnableLoadOnDemand设置为true,Filter设置为contains,事件绑定到OnClientItemsRequesting。

function getProjects(sender, args) { 
            itemsRequesting(sender, args); 

            $.getJSON( 
            '<%= Url.Action("GetProjects", "Capital") %>', 
            { facility: GetFacility().get_value() }, 
            function(data) { 
                fillCombo(sender, data); 
                sender.highlightAllMatches(sender.get_text()); 
            }); 
        } 

上面的javascript方法是使用带参数的get JSON执行ajax调用,子方法fillCombo正在填充组合框。

//使用此方法从您的所有RadComboBox填充JQuery

 function fillCombo(combo, result) { 
            combo.clearItems(); 

            var items = result.d || result; 

            // This just lets your users know that nothing was returned with their search 
            if (items.length == 0) { 
                var comboItem = new Telerik.Web.UI.RadComboBoxItem(); 
                comboItem.set_text("Nothing found"); 
                comboItem.set_value("null"); 
                combo.get_items().add(comboItem); 
                combo.set_text(""); 
            } 

            for (var i = 0; i < items.length; i++) { 
                var item = items[i]; 

                var comboItem = new Telerik.Web.UI.RadComboBoxItem(); 
                comboItem.set_text(item.Text); 
                comboItem.set_value(item.Value); 
                combo.get_items().add(comboItem); 
            } 
        } 

现在,为了取消RADComboBox的默认行为,您可以使用以下代码

//这会取消默认的RadComboBox行为

function itemsRequesting(sender, args) { 
            if (args.set_cancel != null) { 
                args.set_cancel(true); 
            } 
            if (sender.get_emptyMessage() == sender.get_text()) 
                sender.set_text(""); 
        } 

我希望上述解决方案能解决您的问题

答案 1 :(得分:0)

以下是我解决问题的方法:

  function CheckWord() {
        var wordtocheck = $('#Cword').val();
        alert(wordtocheck);
        $.ajax({
            url: '/Home/CheckWord',
            type: 'POST',
            data: {
                cword: wordtocheck
            },
            success: function (data) {
                var listData = [];
                for (var i = 0; i < data.array.length; ++i) {
                    var myString = data.array[i];
                    var mySplitResult = myString.split("-->");
                    var hms = mySplitResult[0];
                    var a1 = hms.split(',');
                    var a2 = a1[0];
                    var a = a2.split(':');
                    var start = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]);
                    var hms1 = mySplitResult[1];
                    var b1 = hms1.split(',');
                    var b2 = b1[0];
                    var b = b2.split(':');
                    var end = (+b[0]) * 60 * 60 + (+b[1]) * 60 + (+b[2]);
                    listData[i] = { Text: myString, Value: start };

                }
                var dropDownList = $('#ComboBox').data('tComboBox');
                // debugger;
                dropDownList.dataBind(listData);
                dropDownList.select(0);
            },
            error: function () {

            }
        });
    }

希望这对其他人有所帮助。