UltraWinGrid:如何刷新显示的数据

本文关键字:数据 刷新显示 UltraWinGrid | 更新日期: 2023-09-27 18:34:00

我是基础设施学和winGrids的新手

我有下表的SQL数据库

Costumers
[ID][Name]

此外,我还有具有winGrid和add''remove 按钮的用户控件。

当用户控件变为时,活动的 winGrid 数据源绑定到表

winGrd.DataSource = Tables.Costumers;

当用户想要从客户表中添加/删除数据时,他单击相关按钮。表格会相应更改,但网格中显示的数据不会更改。我用了

winGrd.Refresh();

但它没有效果

有什么方法可以做到这一点,欢迎代码示例

谢谢

---编辑----添加代码:

private void BtnAdd_Click(object sender, System.EventArgs e)
{
        //...
        DB.DataProxy.AddCostumer(txtType.Text);
        winGrd.Refresh();
        //...
}

AddCostumer 方法最终会调用以下更新 apper 表的方法

public void AddCostumer(string type)
{
        Costumers.InsertOnSubmit(new InsertOnSubmit{ Name = name});
}

UltraWinGrid:如何刷新显示的数据

如果您的DataTable正在更新,UltraGrid应该为您显示这些更改。你可以尝试的是打电话

ultraGrid1.Rows.Refresh(Infragistics.Win.UltraWinGrid.RefreshRow.ReloadData);

ultraGrid1.Rows.Refresh(Infragistics.Win.UltraWinGrid.RefreshRow.RefreshDisplay);

不确定,但是,来自 MSDN 文档中的 InsertOnSubmit()

The added entity will not appear in query results from this table until after SubmitChanges has been called.

所以,也许,如果你想让结果立即出现在 Costomers 实体中,然后在 WinGrid 中,你应该在上面的代码中调用 SubmitChanges()

public void AddCostumer(string name) 
{ 
    Costumers.InsertOnSubmit(new Costumers() { Name = name}); 
    // Submit the change to the database.
    try
    {
        db.SubmitChanges();
    }
    catch (Exception e)
    {
       // message to the user???
    }
} 

执行 add/remove 命令后,从数据库中重新拉取数据并重新执行绑定。在所有这些之前将 DataGridView.DataSource 设置为 null,以防万一;如果连接或任何其他与数据库相关的进程失败,您不希望显示错误的数据。

我认为

这是因为您设置的数据源没有实现 IBindableList,UltraGrid 使用该列表自动更新它更改的数据。您可以尝试手动刷新它,将数据源设置为 null,并在需要显示新信息时再次重置数据源。