我有一个Datagridview绑定到DataSet(来自我的数据库的视图)。在我的更新函数中,我定义了一个UpdateCommand,它接受所有列并将它们发送到数据库中的参数。像这样:
UPDATE Data.DealDetails
SET MoveFromID = @MOVEFROM, ProductID = @PRODUCT, MoveToID = @MOVETO, ScheduledVolume = @VOL, TransportID = @TRANS,
ScheduledDate = @DATE
WHERE (DetailNo = @DETAILNO) AND (DealID = @DEAL)
所以我将它映射到我的数据库列,一切正常,直到我将数据集绑定到数据网格视图中的组合框单元格。在这种情况下,我有一个显示成员(A DESC)和一个ID,我显然需要将ID发送到数据库,因此将该列设置为INT。当我实际调用我的更新功能时出现问题。 Tt(正确地)抛出错误,因为它无法将字符串转换为int(很可能是因为它查看了组合框的文本而不是值)。现在,如果我从下拉列表中选择一个值并单击另一个单元格,则会显示值成员,并且更新运行正常。
我的问题:
如何将datagridviewcell的值发送到更新功能而不是文本。
答案 0 :(得分:0)
我不认为这可以在设计器中完全完成...假设您将datagridview绑定到数据集并将主表的名称绑定为datagridview.DataMember ...那么您可以执行类似这样的操作(假设组合框列是网格中的第三列):
DataGridViewComboBoxColumn cb = ((DataGridViewComboBoxColumn)dataGridView1.Columns[2]);
cb.DataSource = dataSet1.Lookup;
cb.ValueMember = "Id";
cb.DisplayMember = "Name";
生成的dataadapter的更新命令开箱即用(我试过一个简单的例子)......
答案 1 :(得分:0)
PrfctByDsgn给出了一个很好的回应,但最终我发现问题是我抓住了DataError事件只是为了让它沉默(那将学习我)与组合框的混乱。我首先得到了错误,因为我的View将字符串值发送到组合框而不是它需要的数值。