我对C#很陌生,所以我希望在绑定到数据库的Windows表单上得到一些指导。 以下是有关创建新物料主数据的一般流程:
1) 查看需要新行的未结销售订单。 我使用显示项目#和描述的列表视图。 在 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
}
我知道这是一个非常基本的流程,但在我进行的所有研究中,我什么也没发现。 非常感谢所有的帮助。
如果您使用 MSSQL 作为数据库,我建议使用数据表和数据适配器方法:
SqlDataAdapter adt = new SqlDataAdapter(PredefinedSqlCommand);
DataTable MyDataTable = DataGrid.DataSource as DataTable;
adt.Update(MyDataTable);
MyDataTable.AcceptChanges();
在此之前,您必须将表列绑定到 SqlCommand 并将其声明为适配器 InsertCommand。更新和删除行的方法相同。
祝你好运。