无法绑定telerik kendo mvc网格中的下拉列表

时间:2014-11-08 10:51:13

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

我在telerik mvc kendo网格中绑定下拉列表时遇到了困难。

我有一组绑定到网格的记录,每条记录都有一个Foregin Key属性。目前,它正在下拉列表的位置呈现一个文本框。

Detail slot rendering as text input field

我已经搜索了Telerik文档以及他们有工作下拉列表的演示代码,但是它只显示在该字段上使用ClientTemplate并且不显示该模板的代码。

在我的控制器操作中,我使用我的集合填充ViewData,如下所示:

 IEnumerable<DetailSlotDTO> slots = Mapper.ToDTO(detailSlotRepository.GetAll());
 ViewData["Slots"] = slots;

DetailSlotDTO类如下:

 public class DetailSlotDTO
 { 
    public int Id { get; set; }
    public string Description { get; set; }
 }

然后我尝试在我的视图中设置网格如下:

 @(Html.Kendo().Grid<SFT.Web.DTOs.SyndicatedRecordDTO>()
.Name("slotGrid")
.Columns(c =>
{
    c.Bound(f => f.DetailSlot).ClientTemplate(Html.Kendo().DropDownList()
        .BindTo(ViewData["Slots"] as IEnumerable<SFT.Web.DTOs.DetailSlotDTO>)
        .Name("SlotDesc_#=Id#")
        .DataTextField("Description")
        .DataValueField("Id")
        .ToClientTemplate().ToHtmlString()
        );
    c.Bound(f => f.Client);
    c.Bound(f => f.Product);
    c.Bound(f => f.Start);
    c.Bound(f => f.End);
    c.Bound(f => f.PurchaseOrder);
    c.Bound(f => f.Value);
    c.Bound(f => f.KPIPenalty);
    c.Bound(f => f.Notes);
})
.ToolBar(t =>
{
    t.Create();

})
.Editable(e => e.Mode(GridEditMode.InCell))
.DataSource(d => d
    .Ajax()
    .Batch(false)
    .ServerOperation(false)
    .Model(m =>
    {
        m.Id(r => r.Id);
        m.Field(r => r.DetailSlot);
        m.Field(r => r.Client).Editable(true);
        m.Field(r => r.Product).Editable(true);
        m.Field(r => r.Start).Editable(true);
        m.Field(r => r.End).Editable(true);
        m.Field(r => r.PurchaseOrder).Editable(true);
        m.Field(r => r.Value).Editable(true);
        m.Field(r => r.KPIPenalty).Editable(true);
        m.Field(r => r.Notes).Editable(true);
    })
    .Read(read => read.Action("SlotGrid_Read", "SalesFee", new { id = @Model.SalesFeeId }))
    .Create(create => create.Action("SlotGrid_Create", "SalesFee"))
    .Update(update => update.Action("SlotGrid_Update", "SalesFee"))
    .Destroy(destroy => destroy.Action("SlotGrid_Destroy", "SalesFee"))
)
)

对此的任何帮助将不胜感激。昨天我花了整整一天的时间来试图让它上班并且运气不好。

提前谢谢

1 个答案:

答案 0 :(得分:0)

如果你想在编辑模式下显示下拉菜单而不是你必须使用&#34; ForeignKey&#34;剑道网格中的专栏。

columns.ForeignKey(p => p.DetailSlot, (System.Collections.IEnumerable)ViewData["Slots"], "Id", "Description"); 

请检查link,在此链接中我发布了完整的代码和演示项目。