2016-07-12 1 views
1

안녕하세요 저는 Kendo를 ASP.NET MVC 용으로 사용하고 있습니다.검도 드롭 다운 목록의 문자열 목록을 바인딩하는 방법

나는 지금은 검도 드롭 다운리스트에 문자열 목록을 바인딩 할 문자열을 포함하는 데이터

[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

* 문자열 목록 * 자바 스크립트 배열 또는 C# 목록을 의미합니까? – DontVoteMeDown

+0

반환 유형은 json이고 반환 데이터는 C#의 문자열 목록에서 가져온 것이므로 질문을 업데이트하여 더 잘 이해할 수 있도록하십시오. –

답변

1

답 :

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); 

볼 측

당신은 실제로 권리를 제공했습니다. 작업은 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

오 예, for 루프를 사용할 필요가 없습니다. 고마워 내 코드가 줄어 듭니다. –

0

getData()은 무엇을 반환합니까? stringname이라는 속성 또는 DataText/DataValue 필드에서 지정한 속성 이름을 가진 개체의 열거 형을 반환해야합니다. 이 같은 뭔가 : 이 return Json(youStringArray.Select(x=>new{stringname = x}))

+0

아니요 아직 정의되지 않은 값을 설정합니다. 질문을 업데이트했습니다. –

2

이 몰라 그것이 좋은지가 아니라 일부 수동 작업과 솔루션을 가지고 :

@(
       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"); 
           }); 
          }) 
관련 문제