C#在DataGridView中添加行
我目前有以下代码,我想在单击buttonX1时在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
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();
}