以编程方式从DataTable创建DataGridview

时间:2013-11-22 20:54:56

标签: c# winforms 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;

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

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

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

3 个答案:

答案 0 :(得分:5)

通过以编程方式将此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;

答案 1 :(得分:0)

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;

}

试用此代码

答案 2 :(得分:0)

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-DataGridview-(Crub-database-on-DataGridview-use-Cshap)/e95de75579022678.html