UltraWinGrid:如何刷新显示的数据

时间:2012-05-12 09:11:08

标签: c# winforms infragistics ultrawingrid

我是infragistics和winGrids的新手

我的SQL数据库包含以下表格

Costumers
[ID][Name]

另外,我有UserControl,它有winGrid并添加\删除按钮。

当UserControll变为时,活动的winGrid数据源被绑定到表

winGrd.DataSource = Tables.Costumers;

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

winGrd.Refresh();

但它没有效果

如何做到这一点,欢迎使用代码示例

感谢

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

private void BtnAdd_Click(object sender, System.EventArgs e)
{
        //...

        DB.DataProxy.AddCostumer(txtType.Text);
        winGrd.Refresh();

        //...
}

AddCostumer方法最终会调用以下方法来更新客户表

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

4 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:2)

不确定,但是,从MSDN documentation on 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???
    }
} 

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我认为这是因为您正在设置一个不实现IBindableList的DataSource,UltraGrid使用它来自动更新它更改的数据。 您可以尝试刷新它手动将DataSource设置为null并在需要显示新信息时再次重置DataSource。