【问题标题】:Reload data using TableAdapter使用 TableAdapter 重新加载数据
【发布时间】:2012-05-11 07:14:33
【问题描述】:
private void UserList_Load(object sender, EventArgs e)
{
    // TODO: This line of code loads data into the 'workOrdersDataSet.users' table. You can move, or remove it, as needed.
    this.usersTableAdapter.Fill(this.workOrdersDataSet.users);
}

如果以其他形式进行了更改,我如何重新加载数据? (最好是自动而不使用刷新按钮)?

我使用的是 WinForms,后端是 Access 2007。

使用设计器将数据绑定到数据网格

【问题讨论】:

  • 你在开玩笑吗?你的代码刷新了数据,你问怎么做?
  • 它不令人耳目一新。这就是我问的原因
  • 您在另一个表单上引用相同的 DataSet(instance)?
  • this.workOrdersDataSet.users 中的数据多久更改一次?填充它的命令是否过滤可能更新的值?可以多于一种形式修改数据吗?你打算如何处理并发?一旦数据在 DataGrid 中,您的用户会如何处理这些数据?
  • 如果你想刷新你的DataTable,你需要再次执行你的查询来更新TableAdapter以及绑定到dataTable。

标签: c# sql winforms dataset dataadapter


【解决方案1】:

你可以将此行添加到另一个函数中,比如

public void MoveDataToUI()
{
   this.usersTableAdapter.Fill(this.workOrdersDataSet.users);
}

然后从偶数处理程序调用此函数,当有人以另一种形式更改某些内容时会引发该函数。

Events tutorial

【讨论】:

    【解决方案2】:

    首先,我会将Fill 移动到一个单独的函数中:

    public void LoadData()
    {
       this.usersTableAdapter.Fill(this.workOrdersDataSet.users);
    }
    

    然后当您执行加载事件时,您将调用该函数:

    private void UserList_Load(object sender, EventArgs e)
    {
       LoadData();
    }
    

    如果您有另一个表单对数据执行更改,您可以在另一个事件中调用此函数,类似于此。我在我的代码中使用DialogResult

    private void OpenOtherForm()
    {
        DialogResult openForm = new OtherForm().ShowDialog();
        if(openForm == DialogResult.OK)
            LoadData();
    }
    

    在更新过程完成后,在另一个表单的代码中,包含一行代码来告诉您的主表单进行更新:

    private void PerformUpdate()
    {
        try
        {
            // your update code goes here
            DialogResult = DialogResult.OK; // this is the line that tells your other form to refresh
        }
        catch (Exception ex)
        {
            DialogResult = DialogResult.Abort;
        }
    }
    

    然后使用DialogResult,告诉您的主窗体仅在实际发生更新时触发数据刷新。

    【讨论】:

    • 我做了你的建议,但 DataGridView 没有更新。我的按钮代码显示 private void buttonNewUser_Click(object sender, EventArgs e) { //NewUserForm nuf = new NewUserForm(); //nuf.Show();打开其他表单(); }
    • 在您的其他表单上您是否使用 DialogResult?
    • 我正在尝试清除表以刷新数据网格我使用带有绑定的 sqldata 适配器和数据集我可以加载数据但是当我将新数据添加到数据表时我需要刷新以便它显示新的正在添加的数据我尝试了 Dataset.Clear();然后我把 DataAdapter.Fill(Dataset) 放在 dataGrid 使用可视化工作室中的数据成员和数据源绑定但该方法不起作用为什么它起作用,它应该使用 Oledb 但我使用 SQL Oledb
    • @shawn 我建议在您的代码中发布一个新问题,并包括您遇到的任何错误等。
    猜你喜欢
    • 2013-02-02
    • 2018-05-17
    • 2013-09-04
    • 2018-03-21
    • 2023-04-04
    • 2021-11-24
    • 2015-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多