2016-07-12 83 views
1

您好,我正在使用Kendo for ASP.NET MVC。如何绑定kendo下拉列表中的字符串列表

我有一个包含字符串数据

[0]="str1" 
[1]="str2"... and so on 

的名单现在我想串名单装订成剑道下拉列表。

我有绑定下拉列表的名单和id类的列表,但只有一个数据列表中的字符串,我不知道如何绑定!

我已经做到了象下面这样:

@(
       Html.Kendo().DropDownList() 
          .Name("ddlstrings") 
          .DataTextField("stringname") 
          .DataValueField("stringname") 
          //.Events(x => x.Select("sourceclick")) 
          .SelectedIndex(0) 
          .DataSource(source => 
           { 
            source.Read(read => 
            { 
             read.Action("getData", "String"); 
            }); 
           }) 
       ) 

但我不确定。

我返回的数据是这样的:

public JsonResult getData() 
     { 
      try 
      { 
       List<string> stringlist = object.getstrlist(); 
       return Json(stringlist, JsonRequestBehavior.AllowGet); 
      } 
      catch (Exception ex) 
      { 
       return Json("", JsonRequestBehavior.AllowGet); 
      } 
     } 

没有人有任何想法,我怎么能做到这一点!

任何帮助将不胜感激。

+0

什么是你'getData'行动的返回类型? –

+0

By * list of string *你的意思是一个javascript数组或一个c#List? – DontVoteMeDown

+0

返回类型是JSON并返回数据是从C#的字符串列表,我更新了这个问题,请看看它,这样你可以有更好的理解。 –

回答

1

答案你提供的实际上是正确的。该操作必须返回List<SelectListItem>作为输出。 See this Example和在代码中请参阅BindTo属性。

您可以将您的代码更新到下面。

 public JsonResult getData() 
     { 
      try 
      { 
       var stringlist = object.getstrlist().select(x=> new SelectListItem 
          { 
           Value = x, 
           Text = x 
          }).ToList(); 


       return Json(stringlist, JsonRequestBehavior.AllowGet); 
      } 
      catch (Exception ex) 
      { 
       return Json("", JsonRequestBehavior.AllowGet); 
      } 
     } 

我刚刚修改你的代码,没有for循环。

+1

哦,是的,没有必要使用循环。感谢它减少了我的代码。 –

0

你的getData()返回什么?您需要返回具有名为stringname的属性的可枚举对象,或者您在DataText/DataValue文件中指定的属性名称。 事情是这样的: return Json(youStringArray.Select(x=>new{stringname = x}))

+0

不,它仍然设置未定义的值。我已经更新了该问题,请参阅。 –

2

不知道是好还是不好,但有一些体力劳动的解决方案:

var selectList = new List<SelectListItem>(); 

foreach (var element in stringlist) 
       { 
        selectList.Add(new SelectListItem 
        { 
         Value = element.ToString(), 
         Text = element.ToString() 
        }); 
       } 

return Json(selectList, JsonRequestBehavior.AllowGet); 

,并在图面:

@(
       Html.Kendo().DropDownList() 
          .Name("ddlstrings") 
          .DataTextField("Text") 
          .DataValueField("Value") 
          //.Events(x => x.Select("sourceclick")) 
          .SelectedIndex(0) 
          .DataSource(source => 
           { 
            source.Read(read => 
            { 
             read.Action("getData", "String"); 
            }); 
           }) 
       ) 
0

尝试ValuePrimitive:

    Html.Kendo().DropDownList() 
         .Name("ddlstrings") 
         .ValuePrimitive(true) 
         .SelectedIndex(0) 
         .DataSource(source => 
          { 
           source.Read(read => 
           { 
            read.Action("getData", "String"); 
           }); 
          })