自动设置外键&新的DataGridView行中的自动编号?

时间:2010-08-22 11:27:32

标签: c# datagridview row

我有一个包含以下列的订单表:

orderid, clientid, [columns for order details] ...

然后我使用DataGridView为特定客户端显示此表。我隐藏了orderidclientid列,因为orderid是一个自动编号的主键,clientid是常量。

不幸的是,当新行添加到DataGridView时,它们不会持久存储到数据库中。我相信这是因为每当将新行插入DataGridView时,orderid默认为 -1 和/或clientid默认为 null ,但由于这些列是隐藏的,因此用户无法更改它们。

所以,我的问题是:

每当插入新行时,如何自动选择orderid并将clientid默认设置为当前显示的客户端?

2 个答案:

答案 0 :(得分:1)

看来我可以捕获UserAddedRow事件并在那里手动设置正确的值:

private void myDataGridView_UserAddedRow(object sender, DataGridViewRowEventArgs e)
{
    myDataGridView[clientidColumn.Index, e.Row.Index - 1].Value = clientid;
}

这现在正确地将新订单持久保存到数据库中,虽然它看起来有点hacky(为什么它必须是e.Row.Index - 1?)。有没有办法为新行指定列的默认值?

答案 1 :(得分:0)

您可能想要创建主/明细表格

http://msdn.microsoft.com/en-us/library/y8c0cxey.aspx