2012-03-26 16 views
1

Mein Problem ist, dass ich den gewählten Wert eines verschachtelten Dropdownlist in einem Telerik MVC Grid Control einstellen muß. Da das Grid an den Client gebunden ist, muss ich das ausgewählte Element der Dropdown-Liste im Ereignis "onDrpLoad" auf dem Client festlegen.Set ausgewählter Index auf Dropdownliste in Telerik MVC Grid

Was wäre der richtige Weg, unter dem gewählten Index für die Drop-Down-Liste zu setzen? Es ist auch wichtig, dass wenn das ausgewählte Element in der Dropdownliste gesetzt ist, das Ereignis "onDrpChange" NICHT ausgelöst wird. Die „onDrpChange“ Ereignis muss auch (an den Server senden) Zugriff auf die AssistantId des Assistenten, wenn das Ereignis ausgelöst wurde ausgewählt.

Gibt es eine saubere, einfache Möglichkeit, dies zu tun?

Html.Telerik().Grid<Person>().Name("Grid") 
    .DataBinding(dataBinding => dataBinding.Ajax).Select("GetDetails", "Person")) 
    .Columns(columns => columns.Bound(p => p.AssistantId).ClientTempalate(
     Html.Telerik().DropDownList().Name("AssistantList_<#= PersonId #>").BindTo(new 
      SelectList(AssistantController.GetAssistants))).ClientEvents(events => events.OnLoad("onDrpLoad"); events.OnChange("onDrpChange"); 
     ).ToHtmlString()); 

Danke.

Antwort

0

Hier ist, wie ich es tun würde. (Verwendet diesen Ansatz bereits in der Vergangenheit, es funktioniert)

Statt Ihre Select in der DropDown Erklärung erstellen, stellen Sie es eine Eigenschaft des Modells.

public class YourPageViewModel 
{ 
    public YourPageViewModel() 
    { 
     this.YourSelectList = <fill the list>; 
     this.SelectedItemIndex = <index of the item you want to be selected in the list>; 
    } 

    public SelectList YourSelectList { get; set; } 

    public int SelectedItemIndex { get; set; } 
} 

An der Spitze Ihrer Ansicht Sie haben:

@model YourPageViewModel 

dann Ihre DropDown Erklärung:

Html.Telerik().DropDownList().Name("AssistantList_<#= PersonId #>") 
    .BindTo(Model.YourSelectList).SelectedIndex(Model.SelectedItemIndex) 
    .ClientEvents(events => 
    { 
     events.OnLoad("onDrpLoad"); 
     events.OnChange("onDrpChange"); 
    }) 
    .ToHtmlString() 
+0

Ich habe mit dem neuen Foreign Spalte Feature gehen beschlossen, dieses Problem zu beheben. Der einzige Nachteil ist, dass ich eine neue Spalte für die Schaltfläche Bearbeiten hinzufügen muss. – Stardust

+0

Vielen Dank für Ihr Feedback Da mein Grid an den Client gebunden war (d. H. Ajax Binding) und die Elementdaten vom Select-Befehl ("GetDetails") erhalten hat, musste diese Liste in meinem Modell nicht verfügbar gemacht werden. Mein Problem ist, dass auf dem Server, wenn das Ansichtsmodellobjekt erstellt wird, Sie keine Ahnung haben, welches Element in der Zeile angezeigt wird. Das bedeutet wiederum, dass Sie den ausgewählten Index nur festlegen können, wenn Sie eine serverseitige Dropdownliste haben client.FYI - Ich habe die Spaltenfunktion ForeignKey im Telerik Grid-Steuerelement verwendet, um dieses Problem zu beheben. Nachteil ist, dass ich jetzt eine "Befehlsschaltfläche" brauche. – Stardust

Verwandte Themen