【问题标题】:C# Windows Form bound-datagridview update and saveC# Windows Form bound-datagridview 更新并保存
【发布时间】: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


    【解决方案1】:

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

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

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

    祝你好运。

    【讨论】:

      猜你喜欢
      • 2022-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多