2013-01-07 72 views
0

我的應用程序是MVC4;我想用json填充Telerik MVC,結果是一個數組;但是我只有一件物品;這裏是我的腳本:Javascript從數組中填充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],我得到undefined!沒有[我]我得到正確的價值,但只有一個項目。希望你的建議,提前謝謝。

+0

後/主頁/校驗碼控制器代碼 –

+0

也嘗試[I],然後用斷點步,直到碰到未定義的部分,看看瀏覽器的實際響應可以工作得很好數組中的幾個項目流量,並使用調試器來查看錯誤被拋出的位置 –

+0

我用斷點檢查(調試器;)我得到的開始和結束的值,但他們是列表只包含一行;它不會追加!謝謝 – hncl

回答

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

      } 
     }); 
    } 

希望這將可幫助他人。

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,並篩選設置爲包含並綁定到事件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方法正在執行使用具有參數和子方法fillCombo在填充組合框中得到JSON一個AJAX調用。

//使用這個對所有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(""); 
     } 

我希望上述解決方案將解決您的問題

+0

謝謝,但我使用Telerik MVC combobox而不是RadComboBox。 – hncl