数据网格视图中的Combobox在添加新行时会出错

时间:2013-11-06 00:21:45

标签: c# sql linq datagridview

我在datagridview中遇到了一个comboboxcolumn问题:因为我想插入一个新行,我得到一个“System.ArgumentException:DataGridViewComboBoxCell的值无效。”我使用Linq to SQL来填充来自不同表的数据:

  • 表客户(ID(密钥),名称,......)
  • 表地址(ID(密钥),CustomerID,Street,...)
  • 表ContactPerson(ID(密钥),AddressID,名称,标题,......)

我的Linq查询填充ContactDataGridView(绑定到TextBox RelationIdTextBox),如下:

var y = from r in BH.Relations
   where r.RelationID.ToString() == relationIDTextBox.Text
   join v in BH.Addresss on r.RelationID equals v.RelationID
   join c in BH.ContactPersons on v.AddressID equals c.AddressID
   select c;
contactPersonsBindingSource.DataSource = y;
ContactDataGridView.DataSource = contactPersonsBindingSource;

这很好用。

在这个ContactDataGridView中,我有一个ComboBoxCell AddressID,使用以下linq查询填充街道名而不是AddressID:

var addr = from a in BH.Addresss
   where a.RelationID.ToString() == relationIDTextBox.Text
   select new { AddressID = a.AddressID, Street = a.Street };
ContactAddressBindingSource = addr;

这也很好。

也就是说,直到我想在此datagridview中添加一个新行。然后我收到错误

  

“System.ArgumentException:DataGridViewComboBoxCell的值   无效。“

任何人都可以帮助让我明白我做错了什么吗?我真的无法理解!

1 个答案:

答案 0 :(得分:0)

我遇到了完全相同的问题,我通过在网格中添加新行时设置默认值来解决该问题,该默认值必须是组合框中现有的ID之一。

<script src="https://polyfill.io/v2/polyfill.min.js?features=IntersectionObserver"></script>
<div class="carousel">
<div id="x">x</div>
<div id="y">y</div>
<div id="z">z</div>
</div>
<div id="indicator">• ◦ ◦</div>

用地址表中存在的任何ID替换“ 1”,通常是与组合框的第一项相对应的ID。