0
votes

I am using kendo ui grid with Inline editing and it works fine but when i change editor mode to PopUp, it does not display the Customeditor fields(i.e.PickUpLocation) in edit window and show only fields other then customeditor template from model. What I am doing wrong here?

Shipping.cshtml (Main View contains Grid)

@(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 (Model that display the data to grid)

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 (My Custom Editor 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)

Here in edit window, only UnitShipped field is displayed and PickUpLocation dropdownlist is not showing. Why?

1

1 Answers

0
votes

By default the MVC does not generate editor template for nested objects. You can try and do the same in a separate view where EditorForModel is used (the Grid uses exactly this). To customize the popup editor check this code library.