Programmatically create a DataGridview from a DataTable

I have the following code:

DataTable table = new DataTable(); //DataTable is filled with values here... DataGridView grid = new DataGridView(); foreach (DataColumn column in table.Columns) { grid.Columns.Add(column.ColumnName, column.ColumnName); } grid.DataSource = table; 

When I examine the grid , the DataSource attribute indicates that the number of rows is correct. However, the grid.Rows counter is zero.

In contrast, if I create a DataGridView in winform and then assign it DataSource a DataTable , DataGridView.Rows is automatically added.

What code am I missing here to correctly count the DataGridView.Rows counter?

+6
source share
3 answers

By adding this DataGridView control to the form programmatically, it works :) Will someone tell us why?

 DataTable table = new DataTable(); //DataTable is filled with values here... DataGridView grid = new DataGridView(); // assuming (this) is a reference to the current form this.Controls.Add(grid); grid.DataSource = table; 
+5
source
 DataTable table = new DataTable(); //DataTable is filled with values here... DataGridView grid = new DataGridView(); grid.DataSource = table; 

Or

 foreach (DataColumn column in table.Columns) { grid.Columns.Add(column.ColumnName, column.ColumnName); } grid.Rows.Add(table.Rows.count); Int32 i=0; foreach (DataRow rw in table.Rows) { grid.Rows[i].Cell[0].value = rw["col1"].ToString(); i+=1; } 

Try this code

0
source
 private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { try { if (e.ColumnIndex == 5) { string Task = dataGridView1.Rows[e.RowIndex].Cells[5].Value.ToString(); if ( Task == "Delete") { if (MessageBox.Show("Bạn có chắc chắm muốn xóa không?", "Đang xóa...", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { int rowIndex = e.RowIndex; dataGridView1.Rows.RemoveAt(rowIndex); dataset.Tables["tbl_students"].Rows[rowIndex].Delete(); sqlAdapter.Update(dataset, "tbl_students"); } } else if(Task == "Insert") { int row = dataGridView1.Rows.Count - 2; DataRow dr = dataset.Tables["tbl_students"].NewRow(); dr["id"] = dataGridView1.Rows[row].Cells["id"].Value; dr["name"] = dataGridView1.Rows[row].Cells["name"].Value; dr["address"] = dataGridView1.Rows[row].Cells["address"].Value; dr["phone"] = dataGridView1.Rows[row].Cells["phone"].Value; dr["email"] = dataGridView1.Rows[row].Cells["email"].Value; dataset.Tables["tbl_students"].Rows.Add(dr); dataset.Tables["tbl_students"].Rows.RemoveAt(dataset.Tables["tbl_students"].Rows.Count - 1); dataGridView1.Rows.RemoveAt(dataGridView1.Rows.Count - 2); dataGridView1.Rows[e.RowIndex].Cells[5].Value = "Delete"; sqlAdapter.Update(dataset, "tbl_students"); } else if (Task == "Update") { int r = e.RowIndex; dataset.Tables["tbl_students"].Rows[r]["id"] = dataGridView1.Rows[r].Cells["id"].Value; dataset.Tables["tbl_students"].Rows[r]["name"] = dataGridView1.Rows[r].Cells["name"].Value; dataset.Tables["tbl_students"].Rows[r]["address"] = dataGridView1.Rows[r].Cells["address"].Value; dataset.Tables["tbl_students"].Rows[r]["phone"] = dataGridView1.Rows[r].Cells["phone"].Value; dataset.Tables["tbl_students"].Rows[r]["email"] = dataGridView1.Rows[r].Cells["email"].Value; sqlAdapter.Update(dataset, "tbl_students"); dataGridView1.Rows[e.RowIndex].Cells[5].Value = "Delete"; } } } catch (Exception ex) { MessageBox.Show(ex.Message); } } 

go to the site in detail: http://laptrinhvb.net/bai-viet/chuyen-de-csharp/Lap-trinh-ung-dung-them---xoa---sua-truc-tiep-tren-DataGridview- ( Crub-database-on-DataGridview-use-Cshap) /e95de75579022678.html

0
source

Source: https://habr.com/ru/post/958673/


All Articles