2014-03-13 42 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 –