PopUp编辑模式问题中未显示自定义编辑器模板

时间:2014-08-04 12:35:03

标签: asp.net-mvc user-interface kendo-ui grid popup

我正在使用带有内联编辑的kendo ui网格并且它工作正常但是当我将编辑器模式更改为PopUp时,它不会在编辑窗口中显示Customeditor字段(iePickUpLocation),并且仅显示除模型中的customeditor模板之外的字段。我在这里做错了什么?

Shipping.cshtml(主视图包含网格)

@(Html.Kendo().Grid<Comanex.Models.ShippingInstructionViewModel>()
.Name("ShippingGrid")
.Columns(c =>{
    c.Bound(m => m.Id).Hidden();
    c.Bound(m => m.LocationViewModel)
        .ClientTemplate("#=LocationViewModel.LocationName#")
        .Title("Pickup Location");
    c.Bound(m => m.UnitsShipped)
    c.Command(p =>
    {
        p.Edit();
        p.Destroy();
    });
})
.ToolBar(toolbar =>{toolbar.Create().Text("").HtmlAttributes(new { @title = "Add" });})
.Editable(editable => editable.Mode(GridEditMode.PopUp)) 
.Events(events =>{events.Edit("edit");events.Save("save");}) 
.DataSource(dataSource => dataSource 
            .Ajax() 
            .Create(create => create.Action("ShippingInstruction_Insert", "InHouseShipping"))
      .Read(read => read.Action("ShippingInstruction_Read", "InHouseShipping"))
      .Update(update => update.Action("ShippingInstruction_Update", "InHouseShipping"))
      .Destroy(destroy => destroy.Action("ShippingInstruction_Delete", "InHouseShipping"))
.Model(m =>{m.Id(p => p.Id);
          m.Field(p =>    p.LocationViewModel).DefaultValue(ViewData["DefaultPickUpLocation"] as Comanex.Models.LocationViewModel);
      })    
)     
)   

ShippingInstructionViewModel.cs(将数据显示到网格的模型)

public class ShippingInstructionViewModel
{
    [ScaffoldColumn(false)]
    public int Id { get; set; }

    [Required]
    [UIHint("PickUpLocationEditor")]
    public LocationViewModel LocationViewModel { get; set; }

    [Required]
    [Display(Name = "Units Shipped")]
    [DisplayFormat(DataFormatString = "{0:n0}")]
    public Nullable<decimal> UnitsShipped { get; set; }
}

PickUpLocationEditor.cshtml(我的自定义编辑器DropDownListFor)

@model Comanex.Models.LocationViewModel
@(Html.Kendo().DropDownListFor(m => m)
.OptionLabel("Select..")
.DataValueField("LocationId")
.DataTextField("LocationName")
.AutoBind(false)
.DataSource(d =>
{
    d.Read(r => r.Action("GetShippingPickUpLocations", "ProductionZone"))
        .ServerFiltering(true);
})
.Events(evnt=>evnt.Cascade("onCascade")) //Need to add this Event on Parent Drop Downs

)
@Html.ValidationMessageFor(m => m)

此处在编辑窗口中,仅显示UnitShipped字段,并且未显示PickUpLocation下拉列表。为什么呢?

1 个答案:

答案 0 :(得分:0)

默认情况下,MVC不会为嵌套对象生成编辑器模板。您可以尝试在使用EditorForModel的单独视图中执行相同操作(Grid正好使用此方法)。要自定义弹出编辑器,请选中this code library.