如何将项添加到DataGridView ComboBoxColumn?

时间:2013-12-10 15:37:33

标签: c# datagridviewcombobox

我在数据网格视图中填写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();

1 个答案:

答案 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();