【发布时间】:2014-04-04 03:40:21
【问题描述】:
我对 C# 还很陌生,所以我希望得到一些关于绑定到数据库的 windows 窗体的指导。以下是创建新项目主文件的一般流程:
1) 查看需要新行的未结销售订单。我使用 listView 显示 Item# 和描述。在 SelectedIndexChanged 上,我使用与通过一个数据源添加的项目相关的数据填充了一些未启用的行。还向 DataGridView 添加了一行,其中使用不同的数据源以编程方式分配了“默认”值。
上面的效果很好......
2) 然后用户会修改默认建议,并保存页面并将数据提交到数据库。
提交有问题....
我将在这里提取适当的代码部分,解析出有效的东西......
查找要处理的行:
listView1_SelectedIndexChanged(...)
{
itemSelected.Text = listView1.SelectedItems[0].Text;
//Fill by item - use different datasets avoiding key conflicts
this.itemTableAdapter.FillByItem(this.COMPANY01DataSet.item, itemSelected.Text);
this.headerTableAdapter.FillByItem(this.itemDataSet.header, itemSelected.Text);
/// Assign default values as suggestions
this.PopHdrDGV();
}
分配默认值和所需数据:
private void PopHdrDGV()
{
// set defaults as suggestions
DataRow hdrRow = itemDataSet.header.NewheaderRow();
hdrRow["business_unit"] = "US01";
hdrRow["item"] = "item to add";
hdrRow["revision"] = "revision to add";
hdrRow["qty"] = 10;
hdrRow["uom"] = "EA";
hdrRow["cost_flag"] = false;
hdrRow["planning_flag"] = false;
hdrRow["eff_status"] = "N";
hdrRow["eff_date"] = DateTime.Now;
hdrRow["created_by"] = Environment.UserName;
hdrRow["created_date"] = DateTime.Now;
hdrRow["changed_by"] = Environment.UserName;
hdrRow["changed_date"] = DateTime.Now;
//rebind to dgv
headerBindingSource.DataSource = hdrRow;
headerDataGridView.DataSource = headerBindingSource;
}
保存 DGV 并提交到数据库:
button1_click(....)
{
Validate();
headerBindingSource.EndEdit();
headerTableAdapter.Update(itemDataSet.header);
headerDataGridView.Update(); /// added to test a few different approaches
}
我知道这是一个非常基本的流程,但在我进行的所有研究中,我都没有发现任何东西。非常感谢所有帮助。
【问题讨论】:
标签: c# .net winforms datagridview updates