C #Windows表单bound-datagridview更新并保存

时间:2014-04-03 17:34:47

标签: c# .net winforms datagridview updates

我对C#很陌生,所以我希望在绑定到数据库的Windows窗体上进行一些指导。以下是有关创建新项目主文件的一般流程:

1)查看需要新行的未结销售订单。我使用listView显示Item#和description。在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
    }

我知道这是一个非常基本的流程,但在我所进行的所有研究中,我都找不到任何东西。感谢所有帮助。

1 个答案:

答案 0 :(得分:0)

如果您使用MSSQL作为数据库我建议 DataTable DataAdapter 方法:

    SqlDataAdapter adt = new SqlDataAdapter(PredefinedSqlCommand);
        DataTable MyDataTable = DataGrid.DataSource as DataTable;
        adt.Update(MyDataTable);
        MyDataTable.AcceptChanges();

在此之前,您必须将表列绑定到 SqlCommand ,并将其声明为适配器 InsertCommand 。相同的方法是更新和删除行。

祝你好运。