【发布时间】:2012-01-12 16:49:30
【问题描述】:
背景:
开发一个交易系统,订阅由盈透证券 API 发送的许多事件。一个有趣的事件是关于我的交易账户价值,它在交易时间内波动,所以我希望立即看到 accountvalueupdate 事件的信息。我在 Visual Studio 2010 中基于 ActiveX api 和 c# 开发了这个。
我想检查此信息的演示文稿是使用由 (http://www.devexpress.com/Products/NET/Controls/WinForms/Gauges/) 开发的仪表。这个仪表看起来很花哨,但原理应该类似于我们在 Visual Studio 中使用的普通仪表。看来我只能通过数据绑定来更新仪表的值,因为我试图将更新后的帐户值分配给 this.myGauge.value 并且失败了。
我在 MySql 和 VS2010 之间建立了 MySql 连接。我在 MySQL 中只创建了一个名为 account 的表。为了简单起见,我只有两列(accountID和accountValue)和一行|(这意味着当事件带有新的accountValue时,我只是覆盖了上次会话的accountValue的值,那么行数总是一。真的很简单想法.....)。在那个 Gauge proporties 中,我找到了 databinng 选项,并通过使用高级选项进行设置,以导航抛出可用表并将其绑定到唯一有用的列 accountValue。
问题:
- 我将 accountValue 的默认值设置为 500 作为测试的默认值。我构建我的软件。仪表正确显示 500。
- 当然,我的真实账户值不是500,所以现在我点击一个按钮连接API并开始监听事件。几秒钟后,事件到达,因为我在控制台上打开管理 mysql 表并使用 select * from account 持续观察更新。我注意到 accountValue 列的值(TABLE WORKS RIGHT AND WE ONLY HAVE ONE ROW, OEVERWRITTING MODE)变成了正确的值,例如 35000。
但是,仪表根本没有改变......!现在如果我关闭我的软件并再次构建,仪表显示正确的值 35000。现在我关闭了 api 并且没有即将发生的事件,只使用 mysql 的命令行将 accountValue 的值再次更改为 500。仪表中也没有更新.
看起来仪表只在构建会话期间或启动时读取表的值,而从不监听绑定数据库的更新。
顺便说一句,我尝试将投标数据模式设置为“onValidation”或“onPropertieschanged”,但它没有解决,尽管“onPropertieschanged”看起来是正确的......
【问题讨论】:
-
只是一个小想法,也许我应该设置一个事件或计时器来强制仪表重复绑定到我可以获得更新的数据。?如果你们有任何在线教程或其他东西。请转发。
标签: mysql winforms visual-studio-2010 data-binding devexpress