【问题标题】:Refresh one row in Dataset from Database before show edit form在显示编辑表单之前从数据库中刷新数据集中的一行
【发布时间】:2013-01-24 16:38:44
【问题描述】:

我有一个 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()
           }

【问题讨论】:

    标签: c# datagridview dataset refresh row


    【解决方案1】:

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

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

    【讨论】:

    • 好的,但是如何将旧数据集中的旧记录替换为新记录。以及如何只刷新datagridview中的一条记录。
    • 这是不可能的,你也不需要这样做。当您的编辑表单加载时,获取该单条记录的最新版本并使用它来填充编辑框上的字段。然后,当它被保存并关闭编辑表单时,您将需要刷新整个数据集。这是因为如果您担心单行被更新,那么您可能无论如何都应该更新整个内容。嗯,这是可能的,但是您必须做很多工作来手动编辑本地记录,并确保它不会再次触发该行的保存,从而加剧并发问题。 IMO,不值得。
    • 我以类似的方式执行此操作,但在相同的情况下,我只想刷新一行。你可能有权利不值得。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      对于那些在 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);
              }
          }
      

      【讨论】:

        猜你喜欢
        • 2012-05-25
        • 2014-05-30
        • 1970-01-01
        • 2014-01-28
        • 1970-01-01
        • 1970-01-01
        • 2022-01-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多