我在telerik mvc kendo网格中绑定下拉列表时遇到了困难。
我有一组绑定到网格的记录,每条记录都有一个Foregin Key属性。目前,它正在下拉列表的位置呈现一个文本框。
我已经搜索了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"))
)
)
对此的任何帮助将不胜感激。昨天我花了整整一天的时间来试图让它上班并且运气不好。
提前谢谢
答案 0 :(得分:0)
如果你想在编辑模式下显示下拉菜单而不是你必须使用&#34; ForeignKey&#34;剑道网格中的专栏。
columns.ForeignKey(p => p.DetailSlot, (System.Collections.IEnumerable)ViewData["Slots"], "Id", "Description");
请检查link,在此链接中我发布了完整的代码和演示项目。