0

我已经从 SQL 数据库中提取了一些数据到 datagridview 中,但是在用户修改了 datagridview 中的数据后,如何将数据上传回来?

而且,我发现了这样的代码:

this.dataGridView1.Update();

这个方法更新了什么?这是我将数据绑定到datagridview的代码:

SqlDataReader read;
SqlCommand cmd;
DataTable dt = new DataTable();
cmd = new SqlCommand("Select * from Table", 204.192.49.3);
read = cmd.ExecuteReader();
dt.Load(read);
dataGridView1.DataSource = dt;
4

4 回答 4

0

为此,您已使用 Datasource 属性和 SqlDataAdapter 填充数据网格。您只需要更新适配器对象。

于 2012-06-21T06:38:12.177 回答
0

你不能用这个“this.dataGridView1.Update();”更新你的网格 更新数据库中的数据后,您必须将网格视图绑定到数据库的代码

于 2012-06-21T06:39:08.637 回答
0
private void dataGridVies1_CellValidated(object sender, DataGridViewCellEventArgs e)
{
        SqlCommandBuilder cb = new SqlCommandBuilder(sda);
        sda.Update(ds);
}

public partial class Form2 : Form
{

       private void Form2_Load(object sender, EventArgs e)
    {
        con.ConnectionString = connectionstr;

        sda = new SqlDataAdapter("select * from table_user", con);//define dataadapter
        sda.Fill(ds );
        dataGridView1.DataSource = ds.Tables[0];//bind the data,now the datagridview can show up the data

    }
    string connectionstr = "integrated security=SSPI;Initial Catalog=****;Data Source=localhost;";//init

    SqlConnection con = new SqlConnection();//
    SqlDataAdapter sda = new SqlDataAdapter();//

    DataSet ds = new DataSet();
    private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {

    }

    private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
    {
        //you can not update sda here

    }

    private void button1_Click(object sender, EventArgs e)
    {

    }

    private void dataGridVies1_CellValidated(object sender, DataGridViewCellEventArgs e)
    {
        SqlCommandBuilder cb = new SqlCommandBuilder(sda);//auto generate the cmd of create, delete and update 
        sda.Update(ds);//flush to database
     }


}
于 2012-06-21T06:48:13.770 回答
0

最简单的方法是创建一个临时 DataSet,使用 SqlDataAdapter 填充数据,然后将其作为 dataGridView 的 DataSource 传递。这段代码应该可以解决问题: DataSet temp = new DataSet(); SqlDataAdapter SDA = new SqlDataAdapter(); SqlCommand command = new SqlCommand(); SqlConnection connection = new SqlConnection(); string connstring = "YourConnectionString";

然后在您要触发更新的方法中执行以下操作:

`connection.Open();
 command.CommandText = "SELECT * FROM Table" //Adjust the SQL query to your needs
 command.Connection = connection;
 SDA.SelectCommand = command;
 SDA.Fill(temp);
 dataGridView1.DataSource = temp.Tables[0].DefaultView;`

这应该可以解决您的问题。

于 2012-06-21T07:21:26.237 回答