【发布时间】:2012-02-29 10:53:27
【问题描述】:
我在 MainPage.xaml 中有一个 Guage 控件,它需要三个值(值、最小值和最大值)。我已经编写了在存储过程中从数据库中获取这三个值的逻辑。
请告诉我如何在 DomainService 中调用这些值并将量规控件属性绑定到它。
【问题讨论】:
标签: silverlight asp.net-4.0 domainservices componentart
我在 MainPage.xaml 中有一个 Guage 控件,它需要三个值(值、最小值和最大值)。我已经编写了在存储过程中从数据库中获取这三个值的逻辑。
请告诉我如何在 DomainService 中调用这些值并将量规控件属性绑定到它。
【问题讨论】:
标签: silverlight asp.net-4.0 domainservices componentart
下面我将阐明我的知识转储,因为我花了一些时间才准确地弄清楚这一点,并且我想根据 SO 的文档指南为我们以外的任何人做出贡献:
0) 我假设您已经实现了所有存储过程并正在使用 RIA 服务(因为它们对于 Silverlight 开发来说更简单)
1) 在 .Web 中,添加一个新的 EDM - 您需要通过导入功能手动拉入所有存储过程。此时自动生成的代码部分应该已经为您完成了,继续构建您的项目。
2) 是时候添加您的域服务了。添加一个新的域服务,这不会自动生成代码来拉入您的存储过程。
3) 接下来,访问 leontech (http://leeontech.wordpress.com/2010/05/24/ria-services-and-storedprocedures/) 以根据您的存储过程定义进行一些手动编码。 您在这里所做的是从存储过程中公开数据。
4) 开始使用新创建的类
5) 在 Silverlight 中,当您在前端使用 Gauge 时,请确保首先使用 Math.Max() 分配 max,然后在 Load completed 事件处理程序中使用 Math.Min() 方法类似地分配 min。这样可以保证异步请求已完成并且您有可用的值。实际上,在 Visual Studio 中,甚至可以很容易地调试该事件处理程序。
ps: Visual Studio 工具可以识别并允许您根据在步骤 1 中实现的存储过程创建复杂类型。作为我个人的最佳实践,我喜欢尽可能唯一地分配返回列名称,从而在客户端中使用它们用同样的方式编码。
在存储过程的最终选择中,我会做类似的事情
选择 actualValueInDatabase 作为 clientSideDataTypeIWant...
如果有道理
如果以上任何内容不清楚,请告诉我,我会尝试更新更多信息。
祝你好运!
【讨论】: