2014-03-13 44 views
0

我有一個劍道組合框由Ajax調用被填充..問題是,當列表只是一個元素..KENDO UI組合框的一個元素多行

,如果我在getNifs有這個(JSON ) 「A08000143」 「A08000142」 組合框將被正確填充..

如果我只是有:"A08000143"

組合將填充像這樣:

"A" 
"0" 
"8" 
"0" 
"0" 

等..

這是我的jQuery VIEW

   $("#divNIF").kendoComboBox({ 
       filter: "contains", 
       placeholder: "Select Nif...", 
       dataBound: onDataBound, 
       dataSource: { 
        type: "json", 
        serverFiltering: true, 
        transport: { 
         read: { 
          url: "@Url.Action("GetNifs", "Movimientos")", 
         } 
        } 
       } 
      }); 

這是GETNif的功能

[AcceptVerbs(HttpVerbs.Get)] 
    public JsonResult GetNifs() 
    { 
     List <string> aux_2 = getfromrepository.. 

     if (cliente.test) 
     { 
      return Json(aux_2.GetNIFs().First(), JsonRequestBehavior.AllowGet); 
     } 
     return Json(cliente.NIF, JsonRequestBehavior.AllowGet); 
    } 
+0

你能證明你收到JSON?我的意思是,如果您在瀏覽器中打開網址,您正在收到什麼? – OnaBai

+0

「A08000143」只有這些 –

+0

JSON需要是一個數組。如果你返回一個字符串,系統得到的是一個字符數組。 – OnaBai

回答

0

的問題是,返回的值必須是一個數組,儘管它可能需要一個單一的元素。

如果您返回一個string那麼這將轉換爲arraychar並且您會看到您所看到的。

如果你不能改變什麼回報控制,你可能做的伎倆DataSource定義和檢查,如果該值是一個string´ convert it to an陣列with one single string`。喜歡的東西:

$("#divNIF").kendoComboBox({ 
    filter: "contains", 
    placeholder: "Select Nif...", 
    dataBound: onDataBound, 
    dataSource: { 
     type: "json", 
     serverFiltering: true, 
     transport: { 
      read: { 
       url: "@Url.Action("GetNifs", "Movimientos")", 
      } 
     }, 
     schema: { 
      parse: function(d) { 
       if (typeof d === "string") { 
        return [d]; 
       } else { 
        return d; 
       } 
      } 
     } 
    } 
}); 

當我添加了一個parse功能檢查所接收的參數是string如果這樣返回[ ... ]內的原始數據。

檢查之一,並在下面的例子中其他行爲之間的區別:http://jsfiddle.net/OnaBai/cQEH9/

+0

我沒有測試你的代碼,我在控制器中做了「解析」,但問題很好地被發現了! TKS –