1

我是基础设施和 winGrids 的新手

我有带有下表的 SQL 数据库

Costumers
[ID][Name]

另外,我有 UserControl,它有 winGrid 和 add\remove 按钮。

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

winGrd.DataSource = Tables.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

4 回答 4

3

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

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

或者

ultraGrid1.Rows.Refresh(Infragistics.Win.UltraWinGrid.RefreshRow.RefreshDisplay);
于 2012-05-13T19:03:40.850 回答
2

不确定,但是,从关于 InsertOnSubmit() 的 MSDN 文档

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???
    }
} 
于 2012-05-12T11:40:32.370 回答
0

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

于 2013-12-05T12:54:24.553 回答
0

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

于 2012-05-12T12:38:06.430 回答