【问题标题】:Infragistics - disable ultrawingrid automatically updating when datasource changesInfragistics - 在数据源更改时禁用 ultrawingrid 自动更新
【发布时间】:2012-01-04 21:58:35
【问题描述】:

我有一个绑定到数据表的 wingrid。我创建了一个新的异步线程,并从该线程进行远程服务器调用,传递数据表。当服务器调用完成时,wingrid 会自动刷新以显示任何更改。然而,由于这不是在程序的主 UI 线程上完成的,我们经常会收到一个错误,即控件变白并出现一个大的红色 X。

是否有一个标志来设置 wingrid 在数据源更改时不自动更新?我想在远程服务器调用之前关闭它,然后在我回到主线程后再次打开它。

【问题讨论】:

    标签: vb.net infragistics


    【解决方案1】:

    解决方案是使用

    Grid1.BeginUpdate()
    

    在异步方法之前。此方法可防止网格绘制。然后使用

    Grid1.EndUpdate()
    

    在异步方法完成后的 UI 线程上。

    【讨论】:

    • 这只会阻止绘画。最好的方法是始终在 UI 线程上更新 DataTable,因为没有任何方法可以阻止网格或任何绑定控件接收通知,而且这仍然是从后台线程更新控件,这可能会导致问题,因为只有Control 的一些成员是线程安全的。有关线程安全的更多详细信息,请参阅 MSDN 上 Control 的线程安全部分:msdn.microsoft.com/en-us/library/…
    • PostSharp 这样的免费库也许可以帮助它的[ThreadSafeMethod]
    【解决方案2】:

    我想你想要的是:

    Grid1.SuspendRowSynchronization()
    

    然后,完成后:

    Grid1.ResumeRowSynchronization()
    

    【讨论】:

    猜你喜欢
    • 2012-02-04
    • 1970-01-01
    • 2017-05-27
    • 2019-04-04
    • 2021-11-13
    • 1970-01-01
    • 2013-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多