0

私のアプリケーションはMVC4です。jsonを使用してTelerikMVCにデータを入力しようとしていますが、結果は配列です。ただし、アイテムは1つしかありません。これが私のスクリプトです:

  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]なしで正しい値を取得しますが、アイテムは1つだけです。よろしくお願いします。

4

2 に答える 2

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 に答える
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 に答える