C#在DataGridView中添加行

C#在DataGridView中添加行,c#,.net,sql,database,ms-access,C#,.net,Sql,Database,Ms Access,我目前有以下代码,我想在单击buttonX1时在DataGridView中添加一个新行,我如何才能做到这一点 private void Form1_Load(object sender, EventArgs e) { string query = "SELECT * FROM Bill"; OleDbDataAdapter dAdapter = new OleDbDataAdapter(query, DBconn); OleD

我目前有以下代码,我想在单击buttonX1时在DataGridView中添加一个新行,我如何才能做到这一点

    private void Form1_Load(object sender, EventArgs e)
    {

        string query = "SELECT * FROM Bill";

        OleDbDataAdapter dAdapter = new OleDbDataAdapter(query, DBconn);

        OleDbCommandBuilder cBuilder = new OleDbCommandBuilder(dAdapter);

        DataTable dTable = new DataTable();

        dAdapter.Fill(dTable);

        //BindingSource to sync DataTable and DataGridView
        BindingSource bSource = new BindingSource();

        //set the BindingSource DataSource
        bSource.DataSource = dTable;

        //set the DataGridView DataSource
        dataGridViewX1.DataSource = bSource;

        dAdapter.Update(dTable);


    }

    private void buttonX1_Click(object sender, EventArgs e)
    {
        OleDbCommand cmd = new OleDbCommand();
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "INSERT INTO Bill (Item, Quantity, Price) VALUES ('Soft Drink', 1, 1)";
        cmd.Connection = DBconn;
        DBconn.Open();
        cmd.ExecuteNonQuery();
        DBconn.Close();
    }

你提出问题的方式表明你不明白它应该如何运作

执行SqlDataAdapter.Fill时,DataTable将填充数据库表中的数据副本。DataGridView是一个向用户显示该数据的对象

要添加行时,应将其添加到DataTable dTable中,但要获得新行:

(这将出现在按钮单击事件中)

DataRow dr=dTable.NewRow()

将数据放入其中:

dr[0]=某物; dr[1]=somethng; 等等

然后将该行添加到表中

dTable.Rows.Add(dr)


当您更改表中的数据时,必须使用数据源将数据保存回数据库。

是否有任何错误?如果是,是什么?
      private void Select()
       {
              string query = "SELECT * FROM Bill";

                OleDbDataAdapter dAdapter = new OleDbDataAdapter(query, DBconn);

                OleDbCommandBuilder cBuilder = new OleDbCommandBuilder(dAdapter);

                DataTable dTable = new DataTable();

                dAdapter.Fill(dTable);

                //BindingSource to sync DataTable and DataGridView
                BindingSource bSource = new BindingSource();

                //set the BindingSource DataSource
                bSource.DataSource = dTable;

                //set the DataGridView DataSource
                dataGridViewX1.DataSource = bSource;

                dAdapter.Update(dTable);


            }

            private void buttonX1_Click(object sender, EventArgs e)
            {
                OleDbCommand cmd = new OleDbCommand();
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = "INSERT INTO Bill (Item, Quantity, Price) VALUES ('Soft Drink', 1, 1)";
                cmd.Connection = DBconn;
                DBconn.Open();
                cmd.ExecuteNonQuery();
                DBconn.Close();

//call the Select function

                  Select();
            }