以编程方式从DataTable创建DataGridview

我有以下代码:

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; 

当我检查gridDataSource属性指示行数是正确的。 但是, grid.Rows计数为零。

相反,如果我在winform上创建DataGridView ,然后将其DataSource分配给DataTable ,则会自动添加DataGridView.Rows

我在这里缺少什么代码,以使DataGridView.Rows计数正确?

通过以编程方式将此DataGridView控件添加到表单,它可以工作:)任何人都会告诉我们为什么?

 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; 
 DataTable table = new DataTable(); //DataTable is filled with values here... DataGridView grid = new DataGridView(); grid.DataSource = table; 

要么

 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; } 

试试这个代码

 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); } } 

转到网站详细信息: http : //laptrinhvb.net/bai-viet/chuyen-de-csharp/Lap-trinh-ung-dung-them—xoa—sua-truc-tiep-tren havenGridview-( Crub-数据库上的DataGridView使用-Cshap)/e95de75579022678.html