Introduction
I would like to share multiple ways to bind a DataGridView to a Window Forms form using C#.
We will learn the following ways to bind a DataGridView.
- Binding DataGridView using Generic List
- Binding DataGridView using DataTable
- Binding DataGridView using LINQ query result
- Binding DataGridView using Array
- Binding DataGridView using a two-dimension array
- Binding DataGridView manually
1. Binding with Generic List
Add the following class to the project:
- public class Emp
- {
- public int ID { get; set; }
- public string Name { get; set; }
- public string City { get; set; }
- public Emp(int id, string name, string city)
- {
- this.ID = id;
- this.Name = name;
- this.City = city;
- }
- }
Create List of Emp
- protected List<Emp> GetEmpList()
- {
- List<Emp> lEmp = new List<Emp>();
- Emp oemp = new Emp(1234, "Devesh Omar", "GZB");
- lEmp.Add(oemp);
- oemp = new Emp(1234, "ROLI", "GZB");
- lEmp.Add(oemp);
- oemp = new Emp(1235, "ROLI", "MainPuri");
- lEmp.Add(oemp);
- oemp = new Emp(1236, "ROLI", "Kanpur");
- lEmp.Add(oemp);
- oemp = new Emp(1237, "Manish Omar", "GZB");
- lEmp.Add(oemp);
- oemp = new Emp(1238, "ROLI1", "MainPuri");
- lEmp.Add(oemp);
- oemp = new Emp(1239, "ROLI2", "MainPuri");
- lEmp.Add(oemp);
- oemp = new Emp(1230, "ROLI3", "CNB");
- lEmp.Add(oemp);
- oemp = new Emp(1231, "ROLI4", "CNB-UP");
- lEmp.Add(oemp);
- oemp = new Emp(1232, "ROLI5", "GHAZIABAD");
- lEmp.Add(oemp);
- oemp = new Emp(1233, "ROLI6", "UP");
- lEmp.Add(oemp);
- return lEmp;
- }
Binding Grid
- dataGridView1.DataSource = GetEmpList();
The following will be the screen.
2. Binding DataGridView using DataTable
Steps
Create a DataTable and define the columns as in the following:
- DataTable table = new DataTable();
- table.Columns.Add("ID", typeof(int));
- table.Columns.Add("NAME", typeof(string));
- table.Columns.Add("CITY", typeof(string));
Add Rows
- table.Rows.Add(111, "Devesh", "Ghaziabad");
- table.Rows.Add(222, "ROLI", "KANPUR");
- table.Rows.Add(102, "ROLI", "MAINPURI");
- table.Rows.Add(212, "DEVESH", "KANPUR");
Binding DataGridView
- dataGridView1.DataSource=table;
Running the code, the following will be the screen.
3. Binding DataGridView using LINQ query result
First we need to create a Generic list, the following is the sample code:
- protected List<Emp> GetEmpList()
- {
- List<Emp> lEmp = new List<Emp>();
- Emp oemp = new Emp(1234, "Devesh Omar", "GZB");
- lEmp.Add(oemp);
- oemp = new Emp(1234, "ROLI", "GZB");
- lEmp.Add(oemp);
- oemp = new Emp(1235, "ROLI", "MainPuri");
- lEmp.Add(oemp);
- oemp = new Emp(1236, "ROLI", "Kanpur");
- lEmp.Add(oemp);
- oemp = new Emp(1237, "Manish Omar", "GZB");
- lEmp.Add(oemp);
- oemp = new Emp(1238, "ROLI1", "MainPuri");
- lEmp.Add(oemp);
- oemp = new Emp(1239, "ROLI2", "MainPuri");
- lEmp.Add(oemp);
- oemp = new Emp(1230, "ROLI3", "CNB");
- lEmp.Add(oemp);
- oemp = new Emp(1231, "ROLI4", "CNB-UP");
- lEmp.Add(oemp);
- oemp = new Emp(1232, "ROLI5", "GHAZIABAD");
- lEmp.Add(oemp);
- oemp = new Emp(1233, "ROLI6", "UP");
- lEmp.Add(oemp);
- return lEmp;
- }
Writing a LINQ query for the list above:
- List<Emp> Lstemp = GetEmpList();
- var columns = from t in Lstemp
- orderby t.Name
- select new
- {
- EmpID = t.ID,
- Name = t.Name,
- City = t.City
- };
Binding Grid
- dataGridView1.DataSource = columns.ToList();
Running the code.
Adding Row_number to the LINQ query:
- List<Emp> Lstemp = GetEmpList();
- int Srno = 0;
- var columns = from t in Lstemp
- orderby t.Name
- select new
- {
- Row_number=++Srno,
- EmpID = t.ID,
- Name = t.Name,
- City = t.City
- };
In this query we have Row_number=++Srno that would result in an auto-increment row and act as a row number.
4. Binding DataGridView using ArrayAdd the following class to the project:
- public class Emp
- {
- public int ID { get; set; }
- public string Name { get; set; }
- public string City { get; set; }
-
- public Emp(int id, string name, string city)
- {
- this.ID = id;
- this.Name = name;
- this.City = city;
- }
- }
Defining Array
- var arrEmp = new[] {
- new Emp( 1, "Devesh Omar", "Noida"),
- new Emp( 2, "Roli", "Kanpur"),
- new Emp( 3, "Roli Gupta", "Mainpuri"),
- new Emp( 3, "Roli Gupta", "Kanpur"),
- new Emp( 3, "Devesh Roli ", "Noida"),
- };
Binding Grid
- dataGridView1.DataSource = arrEmp;
5. Binding DataGridView using Two dimension Array
Declaring Array
- string[][] Array = new string[100][];
Adding values to the array:
- for(int i = 0; i < 100; i++)
- Array[i] = new string[2] { "ROLI:"+i, "DEVESH:"+i };
Defining LINQ for array:
- var data = (from arr in Array select new { Column_1 = arr[0], Column_2 = arr[1] });
Binding data
- dataGridView1.DataSource = data.ToList();
6. Binding DataGridView Manually
Defining columns
- dataGridView1.ColumnCount = 3;
- dataGridView1.Columns[0].Name = "ID";
- dataGridView1.Columns[1].Name = "Name";
- dataGridView1.Columns[2].Name = "City";
Adding Rows
- string[] row = new string[] { "1", "DEvesh omar", "NOIDA" };
- dataGridView1.Rows.Add(row);
- row = new string[] { "2", "ROLI", "KANPUR" };
- dataGridView1.Rows.Add(row);
- row = new string[] { "3", "DEVESH", "NOIDA!22" };
- dataGridView1.Rows.Add(row);
- row = new string[] { "4", "ROLI", "MAINPURI" };
- dataGridView1.Rows.Add(row);
Running the code:
Conclusion
We have learned various ways to bind a DataGridView to a C# Windows Forms form.