2016-07-12 4 views
1

Hallo Ich benutze Kendo für ASP.NET MVC.Wie bind Liste der Zeichenfolge in Kendo Dropdown-Liste

Ich habe Liste der Zeichenfolge enthält Daten

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

Jetzt habe ich diese Liste der Zeichenfolge in Kendo Dropdownlist binden möchten.

Ich habe bind Dropdownliste nach Liste der Klasse mit Namen und ID, aber mit nur einer Daten in der Liste der Zeichenfolge, ich weiß nicht, wie das zu binden!

Ich habe das wie unten getan:

@(
       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"); 
            }); 
           }) 
       ) 

Aber ich habe nicht definiert.

ich die Daten wie diese Rückkehr:

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

jemand eine Idee Hat, wie kann ich dies tun!

Jede Hilfe wäre zu schätzen.

+0

was ist der Rückgabetyp des 'getData' Aktion? –

+0

Von * Liste der Zeichenfolge * Sie meinen ein Javascript-Array oder eine C# -Liste? – DontVoteMeDown

+0

Rückgabetyp ist JSON und Rückgabedaten sind aus der Liste der Zeichenfolge von C# und ich aktualisierte die Frage, bitte sehen Sie es, damit Sie ein besseres Verständnis haben können. –

Antwort

1

Die Antwort Sie haben tatsächlich Recht gegeben. Die Aktion muss List<SelectListItem> als Ausgabe zurückgeben. See this Example und im Code siehe BindTo Eigenschaft.

Sie können Ihren Code nur unter aktualisieren.

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

Ich habe gerade Ihren Code geändert, um keine for-Schleife zu haben.

+1

Ohhh ja keine Notwendigkeit für For-Schleife zu verwenden. Danke, dass ich meinen Code reduziert habe. –

0

Was gibt Ihre getData() zurück? Sie müssen ein Enumerable des Objekts zurückgeben, das eine Eigenschaft mit dem Namen stringname oder einen beliebigen Eigenschaftsnamen hat, den Sie in den DataText/DataValue-Dateien angeben. Etwas wie folgt aus: return Json(youStringArray.Select(x=>new{stringname = x}))

+0

Nein, es hat immer noch einen undefinierten Wert festgelegt. Ich habe die Frage aktualisiert. –

2

Weiß nicht gut ist oder nicht, aber bekam die Lösung mit etwas Handarbeit:

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

und auf Sichtseite:

@(
       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 Versuchen:

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