好的,更扩展的示例:
我在设计师中做了一些专栏:
列名:customerID and customerFirstName
列标题文本:Ident. and First name
然后我从 sql 表中获取一些数据...
sql = "select customerID, customerFirstName From customer;";
dataGridView.AutoGenerateColumns = false;
dataGridView.DataSource = dataSet.Tables[0].DefaultView;
和sql表的列和dataGridView中的列名一样。
当dataGridView.AutoGenerateColumns = false; 是一个带有headerText Ident. | First name 的两列dataGridView 时我得到的结果。
当我设置 dataGridView.AutoGenerateColumns = true; 时,我得到如下 dataGridView 列:
Ident. | First name | customerID | customerFirstName.
Ident 和 First name 以下的所有行都是 empty,customerID 和 customerFirstName 以下的所有其他行都是 ok。
现在我希望 customerID 和 customerFirstName 下面的行将在 Ident 和 First name 下,并且 customerID 和 customerFirstName 列应该被隐藏。
我写了这段代码,它可以工作:
DataTable dTable = dataGridView.GetTable().Tables[0];
foreach (DataRow dataRow in dataGridView.GetTable().Tables[0].Rows)
{
int n = dataGridView.Rows.Add();
foreach (DataColumn dataColumn in dTable.Columns)
{
dataGridView.Rows[n].Cells[dataColumn.ColumnName].Value = dataRow[dataColumn.ColumnName].ToString();
}
}
但为什么 DataGridView 不使用此代码为我执行此操作:
dataGridView.DataSource = dataSet.Tables[0].DefaultView;