Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Datagridview为Combobox发送要更新的文本而不是值_C#_Datagridview - Fatal编程技术网

C# Datagridview为Combobox发送要更新的文本而不是值

C# Datagridview为Combobox发送要更新的文本而不是值,c#,datagridview,C#,Datagridview,我有一个Datagridview绑定到一个数据集,从我的数据库中获取一个视图。在我的update函数中,我定义了一个UpdateCommand,它接受所有列并将它们发送到数据库中的参数。像这样: UPDATE Data.DealDetails SET MoveFromID = @MOVEFROM, ProductID = @PRODUCT, MoveToID = @MOVETO, ScheduledVolume = @VOL, Trans

我有一个Datagridview绑定到一个数据集,从我的数据库中获取一个视图。在我的update函数中,我定义了一个UpdateCommand,它接受所有列并将它们发送到数据库中的参数。像这样:

UPDATE       Data.DealDetails
SET                MoveFromID = @MOVEFROM, ProductID = @PRODUCT, MoveToID = @MOVETO,         ScheduledVolume = @VOL, TransportID = @TRANS, 
                     ScheduledDate = @DATE
WHERE        (DetailNo = @DETAILNO) AND (DealID = @DEAL)
因此,我将其映射到我的数据库列,在我将数据集绑定到datagrid视图中的combobox单元格之前,一切正常。在这种情况下,我有一个display成员DESC和一个ID,我显然需要将ID发送到数据库,因此将该列设置为INT。当我实际调用update函数时,问题就出现了。Tt正确地抛出了一个错误,因为它无法将字符串转换为int,很可能是因为它查看的是组合框的文本而不是值。现在,如果我从下拉列表中选择一个值并单击另一个单元格,则会显示value成员,更新运行正常

我的问题:


如何将datagridviewcell的值发送到更新函数而不是文本。

我认为这不能完全在设计器中完成。。。假设已将datagridview绑定到数据集,并且主表的名称为datagridview.DataMember。。。然后,假设combobox列是网格中的第三列,则可以执行类似操作:

DataGridViewComboBoxColumn cb = ((DataGridViewComboBoxColumn)dataGridView1.Columns[2]);
cb.DataSource = dataSet1.Lookup;
cb.ValueMember = "Id";
cb.DisplayMember = "Name";

生成的dataadapter的update命令是现成的,然后我尝试了一个简单的例子…

PrfctByDsgn给出了一个很好的响应,但最终我发现问题是我捕获了DataError事件只是为了让它安静下来,这将让我了解组合框的错误。我首先得到了这个错误,因为我的视图将字符串值发送到组合框中,而不是它所需要的数值