在显示编辑表单之前,从数据库中刷新一行数据集

时间:2013-02-08 20:15:10

标签: c# datagridview dataset refresh row

我有一个DataSet + TableAdapter并绑定了dataGridView。我有一个编辑按钮,打开一个新的表单,其中包含要编辑的详细信息(WinForms)。在打开新表单之前,如何刷新数据集中的一行(选定的一行)和数据库中的dataGrid?

示例:两个用户A和B.用户A更改了记录ID(10),用户B仍然具有记录ID(10)中的旧值。用户B按下编辑按钮,应从数据库获取新数据(用户A更改后的数据)。

        string sql = "SELECT * FROM Orders";
        SqlConnection connection = new SqlConnection(connectionString);
        SqlDataAdapter da = new SqlDataAdapter(sql, connection);
        DataSet ds = new DataSet();
        connection.Open();
        da.Fill(ds, "Orders");
        connection.Close();
        dataGridView1.DataSource = ds;
        .....
           private void button1_Click(object sender, EventArgs e)
           {
           //?
           //refresh selected row in datagrid (from current database record)
           //?
           EditForm()
           }

3 个答案:

答案 0 :(得分:0)

在TableAdapter中创建一个新查询,该查询只能获取一行并仅使用您已有行的主键调用它。

将结果插入新的DataSet并获取第一行(在检查Rows.Count()> 0之后

答案 1 :(得分:0)

我会在其自己的方法中填充gridview位,如fill_grid()。然后只需在编辑链接点击事件中调用该方法。然后任何改变都会更新。然后将该方法添加到所有其他按钮链接事件。然后,每次用户点击链接时,网格基本上都会“刷新”。

答案 2 :(得分:0)

对于那些在2019年寻找答案的人, 假设dataAdapter是已定义的早期班级成员

    private void ButtonUpdate_Click(object sender, RoutedEventArgs e)
    {
        if (dataGrid.SelectedItem is DataRowView view)
        {
            DataRow currentRow = view.Row;
            DataTable table = currentRow.Table;
            dataAdapter.Fill(table.Rows.IndexOf(currentRow), 1, table);
        }
    }