We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy. (Last updated on: June 24, 2019).
Unfortunately, activation email could not send to your email. Please try again.
Syncfusion Feedback

Render sublists

Thread ID:

Created:

Updated:

Platform:

Replies:

146983 Aug 27,2019 03:17 PM UTC Sep 24,2019 12:56 PM UTC ASP.NET MVC - EJ 2 5
loading
Tags: Grid
Rowan
Asked On August 27, 2019 03:42 PM UTC

If I have a list of MarkCollection objects to display in a grid like below:

public class MarkCollection
    {
        public string StudentName { get; set; }
        public IEnumerable Marks { get; set; }
    }

how can I access an object in the sublist?

e.g.:


@Html.EJS().Grid("Marks").DataSource(d =>
    {        d.Url($"/api/attendance/marks/loadRegister/dataGrid/{Model.WeekId}/{Model.Session.Id}").BatchUrl("/api/attendance/marks/saveRegister").CrossDomain(false).Adaptor("UrlAdaptor");
    }).Columns(c =>
    {
        c.Field("StudentName").HeaderText("Student").Template("#marksStudentTemplate").Width("150").Add();

        for (int i = 0; i < Model.Periods.Count(); i++)
        {
            c.Field("Marks[i].Value").Template($"#marksPeriodTemplate").Width("70").TextAlign(TextAlign.Center).Add();
        }

    }).EditSettings(e => { e.AllowEditing(true).Mode(EditMode.Batch);}).EnableHover().Toolbar(new List() {"Update"}).GridLines(GridLine.Both).Render()

Thiyagu Subramani [Syncfusion]
Replied On August 29, 2019 12:58 PM UTC

Hi Rowan, 
 
Greetings from Syncfusion support. 
 
Thanks for your patience. 
 
We have analyzed the reported query “Render sub lists” at our end. 
 
Using the below code example, we accomplished your requirement at our end. Please refer the below code example. 
 
[index.cshtml] 
 
@using gridmvclocalization.Models; 
 
@Html.EJS().Grid("Complex").DataSource((IEnumerable<object>)ViewBag.LocalData).Columns(col => 
{ 
    col.Field("EmployeeID").Width("120").HeaderText("EmployeeID").TextAlign(Syncfusion.EJ2.Grids.TextAlign.Center).Add(); 
 
    Country filter1 = new Country(); 
 
    foreach (var prop in filter1.GetType().GetProperties()) 
    { 
         col.Field("Country."+ prop.Name).Width("120").HeaderText(prop.Name).TextAlign(Syncfusion.EJ2.Grids.TextAlign.Center).Add(); 
    } 
 
}).AllowPaging().Render() 
 
[HomeController.cs] 
 
public ActionResult Index() 
        { 
            ViewBag.LocalData = Complex.GetData(); 
            return View(); 
        } 
 
[Model.cs] 
 
public class Country 
    { 
        public string FirstName { get; set; } 
        public string LastName { get; set; } 
        public string CountryName { get; set; } 
        public int OrderID { get; set; } 
    } 
    public class Complex 
    { 
        public int EmployeeID {get; set; } 
        public Country Country { get; set; } 
        public static List<Complex> GetData() 
        { 
            List<Complex> Data = new List<Complex>(); 
            Data.Add(new Complex() { EmployeeID = 10001, Country = new Country() { CountryName = "Australia", FirstName = "ANATR", LastName = "HANAR", OrderID = 10248 } }); 
            Data.Add(new Complex() { EmployeeID = 10002, Country = new Country() { CountryName = "Bermuda", FirstName = "VINET", LastName = "CHOPS", OrderID = 10249 } }); 
            . 
            . 
            . 
            . 
            . 
}); 
            return Data; 
        } 
 
    } 
 
 
 
 
 
 
Please check the sample link and get back to us, if you require any further assistance on this. 
 
 
Regards, 
  
Thiyagu S 


Rowan
Replied On September 16, 2019 03:20 PM UTC

Hello,

I'm not trying to access multiple properties. "Marks" is a sublist for each of the rows.

I'm trying to access a particular index of "Marks" for each of the columns.

Like this:

c.Field("StudentName").HeaderText("Student").Template("#marksStudentTemplate").Width("150").Add();
                        c.Field("Marks[0].Mark").HeaderText(Model.Session.AttendancePeriod.Name).Width("150").Add();
                        c.Field("Marks[1].Mark").HeaderText(Model.Session.AttendancePeriod.Name).Width("150").Add();
                        c.Field("Marks[2].Mark").HeaderText(Model.Session.AttendancePeriod.Name).Width("150").Add();
                        c.Field("Marks[3].Mark").HeaderText(Model.Session.AttendancePeriod.Name).Width("150").Add();
                        c.Field("Marks[4].Mark").HeaderText(Model.Session.AttendancePeriod.Name).Width("150").Add();
                        c.Field("Marks[5].Mark").HeaderText(Model.Session.AttendancePeriod.Name).Width("150").Add();
                        c.Field("Marks[6].Mark").HeaderText(Model.Session.AttendancePeriod.Name).Width("150").Add();
                        c.Field("Marks[7].Mark").HeaderText(Model.Session.AttendancePeriod.Name).Width("150").Add();

Thavasianand Sankaranarayanan [Syncfusion]
Replied On September 17, 2019 11:15 AM UTC

Hi Rowan,  
  
Thanks for your update. 

In previous update,  we have created a sample for your requirements .In this update we have used complex class EmployeeID and  Country list like your MarkCollection

Please refer the code blocks. 

public class Country  
    {  
        public string FirstName { get; set; }  
        public string LastName { get; set; }  
        public string CountryName { get; set; }  
        public int OrderID { get; set; }  
    }  

  public class Complex  
    {  
        public int EmployeeID {get; set; }  
        public Country Country { get; set; }  
  . . . . .  . 


Grid columns rendered below like this.  


foreach (var prop in filter1.GetType().GetProperties())  
    {  
         col.Field("Country."+ prop.Name).Width("120").HeaderText(prop.Name).TextAlign(Syncfusion.EJ2.Grids.TextAlign.Center).Add();  
    }  


You have to achieve your requirement  using the above code blocks. Still your requirement doesn’t met, Please share your  output image and grid rendering code block for further update. 
  
Note: We suspect your requirement may related to hierarchical binding. In this case refer the below help documentation. 


Please check the sample link and get back to us, if you require any further assistance on this. 
 
Regards, 
Thavasianand S. 


Rowan
Replied On September 23, 2019 11:47 AM UTC

With hierarchical binding, can I display child data in the parent table? Instead of expanding to show a sub-table

Thavasianand Sankaranarayanan [Syncfusion]
Replied On September 24, 2019 12:56 PM UTC

Hi Rowan, 
 
Query: With hierarchical binding, can I display child data in the parent table  
  
From your query we understand that you need to display both parent and child nodes in the same table with hierarchical binding.  This can be achieved using TreeGrid.  
  
Please refer the below sample,  
 
Please ensure whether you want to proceed further with the TreeGrid control  

Regards, 
Thavasianand S. 


CONFIRMATION

This post will be permanently deleted. Are you sure you want to continue?

Sorry, An error occured while processing your request. Please try again later.

Please sign in to access our forum

This page will automatically be redirected to the sign-in page in 10 seconds.

Warning Icon You are using an outdated version of Internet Explorer that may not display all features of this and other websites. Upgrade to Internet Explorer 8 or newer for a better experience.Close Icon

Live Chat Icon For mobile
Live Chat Icon