我在数据网格视图中填写comboxcolumn
时遇到问题。以下是我的问题的简要说明。
我在数据网格视图中有一个名为dgvRightsColumn
的组合列,而SQL中的表名为Rights。我想用权利表中的RightsNames填充dagaridview的这个组合框。
DataGridViewComboBoxColumn dgvRightsColumn = new DataGridViewComboBoxColumn();
SqlCommand fillRights = new SqlCommand("SELECT * FROM [Rights]", sqlConnection);
SqlDataReader readerRights = fillRights.ExecuteReader();
while (readerRights.Read())
{
dgvRightsColumn.Items.Add(Convert.ToString(readerRights["RightName"]));
}
readerRights.Close();
答案 0 :(得分:2)
问题:您只是为DataGridViewComboBoxColumn
创建对象,但未指定要从Gridview视为第3列的ComboBox的实际列。
解决方案:您需要cast
DataGridview
所需的列到DataGridViewComboBoxColumn
以插入项目。
替换为:
DataGridViewComboBoxColumn dgvRightsColumn = new DataGridViewComboBoxColumn();
使用此:
DataGridViewComboBoxColumn dgvRightsColumn= dgvTasksRights.Columns[2] as DataGridViewComboBoxColumn;
注意:在执行SqlConnectoion
命令之前,您没有打开sqlConnection
对象ExecuteReader
。您需要按以下方式打开它:
sqlConnection.Open();
完整代码:
试试这个:
SqlCommand fillRights = new SqlCommand("SELECT * FROM [Rights]", sqlConnection);
sqlConnection.Open();
SqlDataReader readerRights = fillRights.ExecuteReader();
DataGridViewComboBoxColumn dgvRightsColumn= dgvTasksRights.Columns[2] as DataGridViewComboBoxColumn;
while (readerRights.Read())
{
dgvRightsColumn.Items.Add(Convert.ToString(readerRights["RightName"]));
}
readerRights.Close();