Datagridview组合框列不填充值

时间:2016-09-13 10:21:19

标签: c# sql-server winforms datagridview combobox

我遇到的问题是datagridview没有用数据库中的值填充组合框列只有一列,其他工作完美。 这就是我填充表格然后用组合框列更改文本框列的方法。

DataTable t = new DataTable();
a.Fill(t);
c.Close();
rootDataView.DataSource = CheckColumns(t);
foreach (primaryKey klic in pKeys)
{
     if (comboException.Contains(klic.FKColumn))
         {
             continue;
         }
     int indexOfpKeyCol = rootDataView.Columns.IndexOf(rootDataView.Columns[klic.FKColumn]);
     rootDataView.Columns.Remove(klic.FKColumn);
     DataGridViewComboBoxColumn cbColumn = new DataGridViewComboBoxColumn();
     cbColumn.Name = klic.FKColumn;
     cbColumn.DataPropertyName = klic.FKColumn;
     cbColumn.Items.Add("");
     SqlCommand command = new SqlCommand("select "+ klic.PKColumn +" from "+ klic.PKTable, c);
     c.Open();
     using (SqlDataReader reader = command.ExecuteReader())
              {
                 while (reader.Read())
                        {
                            cbColumn.Items.Add(reader[klic.PKColumn].ToString());
                        }
              }
      c.Close();
      rootDataView.Columns.Insert(indexOfpKeyCol, cbColumn);
}
rootDataView.Refresh();

我对其他10个表使用相同的确切代码,除此之外没有任何问题。

CREATE TABLE [dbo].[curveRate](
[ID] [int] IDENTITY(1,1) NOT NULL,
[workStatus] [nvarchar](50) NOT NULL,
[goal] [float] NOT NULL,
[timeFrom] [datetime] NULL,
[timeTo] [datetime] NULL,
[costCenter] [nvarchar](50) NOT NULL,
[name] [nvarchar](50) NULL,
CONSTRAINT [PK_curveRate] PRIMARY KEY CLUSTERED (
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

外键位于workStatus和costCenter上。不工作的是workStatus,这很奇怪,因为我在其他表中使用workStatus并且它有效。我100%确定数据类型都是nvarchar(50)并且它们匹配。

当我逐步调试它时,我每行都会收到错误

  

DataGridViewComboBoxCell值无效。

加载DGV后,来自costCenter列的组合框被填充,但workStatus则没有。我的代码或数据库设计失败了吗?

0 个答案:

没有答案