Datagridview发送文本而不是值来更新组合框

本文关键字:更新 组合 文本 Datagridview | 更新日期: 2023-09-27 18:12:57

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

UPDATE       Data.DealDetails
SET                MoveFromID = @MOVEFROM, ProductID = @PRODUCT, MoveToID = @MOVETO,         ScheduledVolume = @VOL, TransportID = @TRANS, 
                     ScheduledDate = @DATE
WHERE        (DetailNo = @DETAILNO) AND (DealID = @DEAL)

所以我映射到我的数据库列,一切工作正常,直到我绑定一个数据集到我的数据网格视图的组合框单元格。在这种情况下,我有一个显示成员(DESC)和一个ID,我显然需要将ID发送到数据库,因此将该列设置为INT。当我实际调用更新函数时,问题就出现了。Tt(正确地)抛出错误,因为它不能将字符串转换为int(很可能是因为它查看了组合框的文本而不是值)。现在,如果我从下拉列表中选择一个值并单击另一个单元格,则显示值成员并且更新运行良好。

我的问题:

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

Datagridview发送文本而不是值来更新组合框

我不认为这可以完全在设计器中完成…假设您将datagridview绑定到数据集,并将主表的名称命名为datagridview。数据成员……然后可以这样做(假设组合框列是网格中的第三列):

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

生成的数据适配器的更新命令开箱即用,然后(我尝试用一个简单的例子)…

PrfctByDsgn给出了一个很好的回应,但最终我发现问题是我抓住了DataError事件只是为了沉默它(这将学习我),这与组合框的螺钉。我首先得到了错误,因为我的视图发送字符串值到组合框,而不是它需要的数值。