2016-07-12 75 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"); 
           }); 
          })