Your Privacy Matters: We use our own and third-party cookies to improve your experience on our website. By continuing to use the website we understand that you accept their use. Cookie Policy
90
igGrid can not display Data
posted

Hello,

I want to display C# DataTable Data on igGrid But not display plz any one can help

Code:

 public JsonResult BindGridVirtualization()
        {
            MMDataModelDataContext _db = new MMDataModelDataContext(_getString.GetSQLString());
            GridVirtualizationModel model = new GridVirtualizationModel();
            this.InitializeGridVirtualization(model.GridVirtualization);     


            DataTable table = GetMealTable();           
            var value = from c in table.AsEnumerable().AsQueryable()
                            select c;
            model.GridVirtualization.DataSource = value;
            return model.GridVirtualization.GetData();
        }

private DataTable GetMealTable()

{

DataTable tbl = new DataTable();

foreach (string str in columns)
            {
                tbl.Columns.Add(str,typeof(string));
            }

 var value = from c in _db.GetTable<tblMeal>()
                        //where Convert.ToDateTime(c.Date).ToString("dd/MM/yyyy").Contains(con)
                        where c.Date.Contains(con)
                        orderby c.Date ascending

                        select c;

DataRow tr = tbl.NewRow();

 foreach (tblMeal ob in value)

{
        tr = tbl.NewRow();

        tr[ob.MemberNickName] = ob.Amount;

        tr["Date"] = ob.Date;tbl.Rows.Add(tr);

}

return tbl;

}

Parents
  • 15979
    posted

    Hello jahangir_cse,

    In order to use “igGrid” with “DataTable” as Data Source you should convert the “DataTable” records to “IQueryable” first.

    For example if you have the following “Model” called “Person” that matches the “DataTable” structure:

    public class Person

        {       

            public string PersonId { get; set; }

           

            public string Gender { get; set; }

     

            public string FirstName { get; set; }

     

            public string LastName { get; set; }      

            public DateTime DateOfBirth { get; set; }

        }

     

    And your “View” for the grid is as follows:

    @( Html.Infragistics().Grid<Person>()

    .AutoGenerateColumns(false)

    .Columns(column =>

        {

            column.For(x => x.PersonId).DataType("string").HeaderText("Person ID");

            column.For(x => x.FirstName).DataType("string").HeaderText("First Name");

            column.For(x => x.LastName).DataType("string").HeaderText("Last Name");

            column.For(x => x.Gender).DataType("string").HeaderText("Gender");

            column.For(x => x.DateOfBirth).DataType("datetime").HeaderText("Date Of Birth");

        })

        .Features(feature =>

            {

                feature.Paging().PageSize(10).PrevPageLabelText("Previous").NextPageLabelText("Next");

                feature.Sorting().Mode(SortingMode.Single).ColumnSettings(settings =>

                    {

                        settings.ColumnSetting().ColumnKey("PersonId").AllowSorting(true);

                    });

                feature.Selection().MouseDragSelect(true).MultipleSelection(true).Mode(SelectionMode.Row);

            })

            .DataSourceUrl(Url.Action("GetPeople"))

            .Width("100%")

            .Height("350px")

            .DataBind()

            .Render()

            )

     

    Then the data needed for the grid should be converted like this from the “Controller”:

    [GridDataSourceAction]

            public ActionResult GetPeople()

            {

                Repository.Repo repo = new Repository.Repo();

     

                DataTable table = repo.GetDataTable();

                List<Person> personColection =  new List<Person>();

                foreach (DataRow  row  in table.Rows)

                {

                    Person person = new Person

                    {

                        PersonId = Convert.ToString(row["PersonId"]),

                        Gender = Convert.ToString(row["Gender"]),

                        FirstName = Convert.ToString(row["FirstName"]),

                        LastName = Convert.ToString(row["LastName"]),

                        DateOfBirth = Convert.ToDateTime(row["DateOfBirth"]),

                    };

                    personColection.Add(person);

                }

     

                IQueryable<Person> people = personColection.AsQueryable<Person>();

                return View(people);

            }

     

    In this way the data from the “DataTable” will be properly sent and displayed from the grid.

    Test this approach and let me know what the results are on your setup.

Reply Children