【问题标题】:UltraWinGrid: How to refresh displayed dataUltraWinGrid:如何刷新显示的数据
【发布时间】:2012-05-12 09:11:07
【问题描述】:

我是基础设施和 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});
}

【问题讨论】:

  • 您应该显示用于更新数据库的代码。我怀疑您使用的是直接访问数据库而不更新 DataTable Costumers
  • 我有使用 linq 的 DAL 层,表格正在更新!当我关闭 UserControll 并再次创建它时,显示的数据会更新。
  • 也许我必须更清楚。 Costumers DataTable 是一个断开连接的对象,更新数据库上的表不会更改绑定到 Grid 的 DataTable 对象。我怀疑这是问题所在。您说用户单击一个按钮以从网格中删除一行。这就是我希望看到的代码 - buttonRemove_click 或 buttonAdd_Click
  • 嘿,你可能是对的,我已经用将客户插入客户表的代码更新了问题。我如何“连接”客户表。

标签: c# winforms infragistics ultrawingrid


【解决方案1】:

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

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

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

【讨论】:

  • 除非您更新了网格绑定的DataTable中的数据,否则这些不会有任何影响。
【解决方案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???
    }
} 

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2016-11-18
        • 2019-06-16
        • 2016-12-28
        • 2017-11-10
        • 2013-02-11
        • 2013-02-15
        • 2014-10-09
        • 2018-05-13
        • 2018-12-04
        相关资源
        最近更新 更多