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