DataGridViewComboBoxCell 绑定 - “值无效”

Posted

技术标签:

【中文标题】DataGridViewComboBoxCell 绑定 - “值无效”【英文标题】:DataGridViewComboBoxCell Binding - “value is not valid” 【发布时间】:2015-04-21 13:53:52 【问题描述】:

我知道有很多关于同一主题的问题,但我找不到答案。所以我想在我的 DataGridView 中添加一个组合框列。我在 SQL 中构建了一个返回 ID/DisplayValue 的 SP。这是查询/结果集。

所以现在在 VS 中,我用很少的程序构建了一个 ds。

现在我添加了具有以下设置的列。

我的大数据集列 IDCategorie 返回

因此,当我尝试在 formLoad 上运行此查询以查看我的数据时。

cmd = new SqlCommand("spProduse_Show", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            try
            
                SqlDataAdapter sda = new SqlDataAdapter();
                sda.SelectCommand = cmd;
                DataTable dtProduse = new DataTable();
                sda.Fill(dtProduse);
                spProduseShowBindingSource.DataSource = dtProduse;
                dataGridView1.DataSource = spProduseShowBindingSource;
                sda.Update(dtProduse);
            
            catch (Exception ex)
            
                MessageBox.Show(ex.Message);
            

我从标题中得到错误,有什么想法吗?我对另一列做了同样的事情,一切正常,但出于某种原因,它没有,我无法弄清楚。

另外 VS 在form_Load 事件中添加了这两行

 // TODO: This line of code loads data into the 'dsProduse.spLK_CategoriiProduse' table. You can move, or remove it, as needed.


   this.spLK_CategoriiProduseTableAdapter.Fill(this.dsProduse.spLK_CategoriiProduse);
    // TODO: This line of code loads data into the 'dsProduse.spLK_Furnizori' table. You can move, or remove it, as needed.
    this.spLK_FurnizoriTableAdapter.Fill(this.dsProduse.spLK_Furnizori);

【问题讨论】:

【参考方案1】:

好的,经过一番搜索,我设法找到了我的问题。问题在于我的列的数据类型。我的DataPropertyNameInt16,我的ValueMember 是Int32。无论如何,我已经将我的ValueMember 修改为Int16,现在它可以工作了。我已经发布了这个答案,以防其他人遇到同样的情况。数据类型要格外小心!!!

【讨论】:

以上是关于DataGridViewComboBoxCell 绑定 - “值无效”的主要内容,如果未能解决你的问题,请参考以下文章

DataGridViewComboBoxCell 的 SelectedIndex? VB.NET

“DataGridViewComboBoxCell 值无效。”属性数据源

DataGridViewComboBoxCell 绑定 - “值无效”

选择后 DataGridViewComboBoxCell 显示 Value 成员而不是 Display 成员

winform循环向DataGridViewComboBoxCell添加值

c# 获取 DatagridviewComboBoxCell 的选定值