我有一个包含以下列的订单表:
orderid, clientid, [columns for order details] ...
然后我使用DataGridView为特定客户端显示此表。我隐藏了orderid
和clientid
列,因为orderid
是一个自动编号的主键,clientid
是常量。
不幸的是,当新行添加到DataGridView时,它们不会持久存储到数据库中。我相信这是因为每当将新行插入DataGridView时,orderid
默认为 -1 和/或clientid
默认为 null ,但由于这些列是隐藏的,因此用户无法更改它们。
所以,我的问题是:
每当插入新行时,如何自动选择orderid
并将clientid
默认设置为当前显示的客户端?
答案 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)
您可能想要创建主/明细表格