0

我的应用程序是 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] 时,我变得不确定!没有 [i] 我得到正确的值,但只有一项。非常感谢您的建议,在此先感谢。

4

2 回答 2

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 () {

            }
        });
    }

希望这对其他人有帮助。

于 2013-01-07T21:07:30.153 回答
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(""); 
        } 

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

于 2013-01-07T04:13:28.230 回答