i have list of categories , each category may have subcategories. getting list correct records in controller if try use list of subcategories in view, shows nothing.
classes:
public class dashboardtile { public int id { get; set; } public int? categoryid { get; set; } public string name { get; set; } public string description { get; set; } } public class dashboardtilebo : dashboardtile { public bool ischecked { get; set; } public list<dashboardtilebo> dashboardtiles { get; set; } } public class addtilevm { public list<dashboardtilebo> dashboardtiles { get; set; } } controller:
public actionresult addtiles() { var alldashboardtiles = bll.publiclayer.getalldashboardtiles(sessionitems.userid); var addtilevm = new addtilevm() { dashboardtiles = alldashboardtiles, }; return partialview(addtilevm ); } view:
@model hugo.businessobjects.addtilevm <link href="~/content/js/nestable/nestable.css" rel="stylesheet"/> <script src="~/content/js/nestable/jquery.nestable.js"></script> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal">×</button> <h4 class="modal-title">add/remove tiles desktop</h4> </div> @using (ajax.beginform("addtiles", "default",new ajaxoptions {onsuccess = "onsuccess" })) { @html.antiforgerytoken(); <div class="modal-body"> <div class="row"> <div class="col-lg-12"> @for (var = 0; < model.dashboardtiles.count; i++) { <div class="col-lg-5"> <label class=""> @html.checkboxfor(a=> model.dashboardtiles[i].ischecked) @model.dashboardtiles[i].description </label> </div> @*if (@model.dashboardtiles[i].dashboartiles.count > 0) { (var j = 0; j < @model.dashboardtiles[i].dashboartiles.count; j++) { <div class="col-lg-5"> <label class=""> @html.checkboxfor(a => @model.dashboardtiles[i].dashboartiles[j].ischecked) @model.dashboardtiles[i].dashboartiles[j].description </label> </div> } }*@ @html.hiddenfor(a=> model.dashboardtiles[i].id) } </div> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-rounded btn-sm btn-tiles" data-dismiss="modal">cancel</button> <button type="submit" class="btn btn-rounded btn-sm btn-tiles" >update</button> </div> } </div><!-- /.modal-content --> } method fetch list
public static list<businessobjects.dashboardtilebo> getalldashboardtiles(long userid) { using (var context = new hugointernalentities()) { var distinccategoryids = context.dashboardtiles.select(a => a.categoryid).distinct().tolist(); var alltiles = (context.dashboardtiles.where(a => distinccategoryids.contains(a.id)).select(x=> new businessobjects.dashboardtilebo { id = x.id, name = x.name, description = x.description, })).tolist(); var list = context.dashboardusertiles.where(a => a.userid == userid).select(a => a.dashboardtileid).tolist(); alltiles.foreach(a => a.ischecked = list.contains(a.id)); alltiles.foreach(a=>a.dashboardtiles=context.dashboardtiles.where(b=>a.id==b.categoryid && b.id != a.id).select(x=> new businessobjects.dashboardtilebo { id = x.id, name = x.name, description = x.description, }).tolist()); alltiles.foreach(a => a.dashboardtiles.foreach(b => b.ischecked = list.contains(b.id))); return alltiles; } } in above view list of main categories shown if uncomment code subcategories nothing shown. please see screenshot of list getting in addtilevm
list of tiles:

Comments
Post a Comment