在Telerik MVC Grid的Dropdownlist上设置选定的索引

时间:2012-03-26 17:30:06

标签: asp.net-mvc asp.net-mvc-3 telerik telerik-grid

我的问题是我需要在Telerik MVC网格控件中设置嵌套DropDownList的选定值。由于网格绑定在客户端上,我需要在客户端的“onDrpLoad”事件中设置下拉列表的选定项。

为下面的下拉列表设置所选索引的正确方法是什么?同样重要的是,当设置下拉列表中的所选项目时,不会导致“onDrpChange”事件触发。 “onDrpChange”事件还需要访问(发送到服务器)事件触发时选择的助手的AssistantId。

有一个干净简单的方法吗?

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

感谢。

1 个答案:

答案 0 :(得分:0)

我是这样做的。 (过去已经使用过这种方法,它有效)

不要在DropDown声明中创建SelectList,而是将其设为模型的属性。

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

在您的视图顶部,您有:

@model YourPageViewModel

然后你的DropDown声明:

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