0

Ich bekomme immer "Keine Elemente zur Anzeige" in meinen Child-Grids. Ich habe 2 Ansicht Modelle, Master und Name. Ein Master kann mehrere gebundene Namen haben. Wenn ich die Seite ausführe, zeigt es mir Master-Informationen wie erwartet. Aber sein Kind, Name, hat keine Elemente angezeigt, obwohl wenn ich auf dem JSON Breakpoint es 2 Namen enthält, die es zurückgibt.Hierarchische Daten im Grid können nicht geladen werden. 0 Elemente



Index.cshtml

@(
Html.Kendo().Grid(Model).Name("MainGrid") 
    .Columns(col => 
    { 
     col.Bound(m => m.ListingId).Width(100); 
     col.Bound(m => m.Gender).Width(100); 

    }) 
    .ClientDetailTemplateId("NameGridTemplate") 
    .Reorderable(reorder => reorder.Columns(true)) 
    .Sortable() 
    .Scrollable() 
    .Filterable() 
    .Groupable() 
    .Pageable() 
    .DataSource(ds => ds 
     .Ajax() 
     .Model(m => m.Id(i => i.ListingId)) 
     .Read(read => read.Action("HierarchyBinding_Master", "Main")) 
    ) 
    .Events(events => events.DataBound("dataBound")) 

) 

<script id="NameGridTemplate" type="text/kendo-tmpl"> 
    @(Html.Kendo().Grid<NameViewModel>() 
      .Name("grid_#=ListingId#") // template expression, to be evaluated in the master context 
      .Columns(columns => 
      { 
       columns.Bound(o => o.PersonName).Width(110); 
       columns.Bound(o => o.Type).Width(110); 

      }) 
      .DataSource(dataSource => dataSource 
       .Ajax() 
       .PageSize(10) 
       .Read(read => read.Action("HierarchyBinding_Name", "Main", new { listingId = "#=ListingId#" })) 

      ) 
      .Pageable() 
      .Sortable() 
      .ToClientTemplate() 
    ) 
</script> 

<script> 
    function dataBound() { 
     this.expandRow(this.tbody.find("tr.k-master-row").first()); 
    } 
</script> 



Meister ViewModal public class MasterViewModal {

public int ListingId { get; set; } 

    public String Gender { get; set; } 

    public int? Swn { get; set; } 

    public DateTime? SwnExpDate { get; set; } 

    public String Source { get; set; } 

    public Boolean PrStatus { get; set; } 

    public String PrCountry { get; set; } 

    public Boolean PermanentBan { get; set; } 

    public String BanIssueAgency { get; set; } 
} 



NameViewModal öffentliche Klasse NameViewModel { public int ListingId {get; einstellen; } öffentliche Zeichenfolge PersonName {get; einstellen; } öffentlicher String-Typ {get; einstellen; } public DateTime DateLastUpd {get; privates Set; } öffentliche Zeichenfolge UserLastUpd {get; privates Set; }}



Hauptregler public class MainController: Controller {

 ListingContext db = new ListingContext(); 

     public ActionResult Index() 
     { 
      List<Master> dataList = null; 

      dataList = db.Masters.ToList(); 
      List<MasterViewModal> mvmList = Logic.GetMasterViewModels(dataList); 
      return View(mvmList); 
     } 

     public ActionResult HierarchyBinding_Master([DataSourceRequest] DataSourceRequest request) 
     { 
      List<Master> masterList = null; 
      masterList = db.Masters.ToList(); 
      return Json(Logic.GetMasterViewModels(masterList)); 
     } 

     public ActionResult HierarchyBinding_Name(int listingId, [DataSourceRequest] DataSourceRequest request) 
     { 
      List<Name> nameList = null; 
      nameList = db.Names.ToList(); 
      JsonResult j = Json(nameList 
       .Where(name => name.ListingId == listingId) 
       .ToDataSourceResult(request), JsonRequestBehavior.AllowGet); 
      return j; 
     } 


    } 

Antwort

0

Bitte versuchen Sie diese

public ActionResult HierarchyBinding_Name(int listingId, [DataSourceRequest] DataSourceRequest request) 
{ 
    List<Name> nameList = null; 
    nameList = db.Names.ToList(); 

    return Json(nameList 
     .Where(name => name.ListingId == listingId) 
     .ToDataSourceResult(request)); 
} 

die Jsonrequestbehaviour.Allowget entfernen.

Ich denke, es wird funktionieren. Ich sehe nichts falsch mit Ihrem Rasierer Code