1

我有一个 DataSet + TableAdapter 和绑定的 dataGridView。我有一个编辑按钮,它打开一个新表单,其中包含要编辑的详细信息(WinForms)。在打开新表单之前,如何从数据库中刷新 Dataset 和 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()
           }
4

3 回答 3

0

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

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

于 2013-02-08T20:36:36.160 回答
0

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

于 2013-02-09T01:01:03.320 回答
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);
        }
    }
于 2019-01-04T20:12:32.360 回答