①必须在ScriptManager控件下添加对必要的.asmx及.js文件的参考;
②我们定义了若干span和div HTML元素以作为MS AJAX客户端控件—ListView的占位符。如前所述,ListView提供有好几个有用的模板—layoutTemplate,itemTemplate,separatorTemplate,emptyTemplate,和一个必要的属性—itemTemplateParentElementId(指定temTemplate和separatorTemplate的父元素;通过这种方式,该itemTemplate和separatorTemplate相关联的元素都可以在其中反复生成);
③接下来,我们进行了声明性编程(在下篇中再详细讨论它)。为了实现把从web服务端返回的数据显示于ListView控件中,我们必须使用DataSource控件来指定这个服务的URL;
④我们定义了一个ListView框架,相应的模板对应于它们各自的HTML对应元素;
⑤在步骤④中,我们还建立了对web服务内的属性的绑定;
⑥最后,细心的读者应该还会注意到,我们在此使用声明性方式来调用按钮的点击事件处理器,它又进一步调用DataSource控件BooksDataSource的load方法。
2、创建一个Web服务
接下来,我们将使用声明性方式写一个web服务以便从浏览器端消费它。在本例中,我们让该服务返回一个Book对象数组。
右击工程并选择“添加新项”,然后创建一个新的Web服务,并命名为为BookDataService.asmx。然后,在文件BookDataService.cs中,我们要编写我们的WebMethod—GetTitles。下面的列表5展示了其中重要的代码片断:
列表5
|
在此,有几点需要强调一下:
①根据有关资料,我们必须把属性ScriptService置于这个Web服务之前,这样才会使MS AJAX框架能够从客户端对它进行调用;
②我们令这个web服务派生自一个有些特殊的WebService—DataService,我们将在下篇中来讨论它;
③还要注意方法GetTitles前面使用一个特别的属性DataObjectMethod(定义于命名空间System.ComponentModel中)进行了修饰。这个属性含有两个参数—第一个是DataObjectMethodType,允许你指出是否此方法用于删除,插入,选择,填充或更新一个项;第二个属性(一个boolean值)用于指示是否某个方法是相应于它的操作类型的缺省方法。
④在此,还出现了另一个属性—DataObjectField。这个属性使用了三个参数以允许你指定:是否该属性是一个主键和一个自动增量值,它的字节长度,以及是否它可以为空。
现在,我们已经明确WebMethodGetTitles将返回一个Book对象数组。
3、消费Web服务
事实上,这项任务已经实现了。真的吗?是的。因为根据我们在前面对控件DataSource的load方法的解释,当你点击按钮“Get Book by Title”时,数据源BooksDataSource的方法load即被调用,然后,借助于修饰符[DataObjectMethod(DataObjectMethodType.Select)],WebMethod GetTitles被调用。最后,ListView Books被使用从WebMethod GetTitles返回的数据加以填充。
4、运行示例
如果没有什么问题的话,按F5并启动这个示例。然后,点击按钮“Get Book By Title”,你将看到如图6所示的运行时刻屏幕快照。
![]() |
| 图6:示例程序运行时刻快照 |
【重要提示】为了正确运行这个示例,你还必须在配置文件web.config内添加下列转换器。
列表 6
至此,我们已经匆忙地介绍完一个简单的示例!
五、总结
在这个上篇中,我们首先概括介绍了MS AJAX框架中的数据绑定架构,然后我们较细致了分析了主要的用于实现的的客户端控件及其相互间的关系。最后,我们通过一个简单的示例给出MS AJAX框架中的数据绑定架构在实践的应用。在下篇中,我们将进一步分析两个更为复杂的示例以进一步挖掘MS AJAX客户端数据绑定所蕴含的思想。
| 共3页: 上一页 [1] [2] 3 | ||
|
|
|||
| · McWill、WiMAX、3G博弈 · 网管系统介绍 · 网络管理系统如何支撑I.. · CISSP认证成长之路 · 51CTO国庆充电专题之好.. · 网络技术经典基础教程 · 51CTO主编推荐经典专题 · RAID——磁盘阵列基础 |
· 充电计划之热门IT认证.. · 51CTO技术自测 挑战自.. · AMD Phenom三核处理器.. · 国际文档格式标准开战 · 2007年互联网大会 · 我是黑客我怕谁——讲.. · Solaris 10 配置管理 · Solaris基础知识入门 |
||
|
|||
| · Java基础教程 · VPN技术 · ARP攻击防范与解决方案 · SQL Server 2005全解 · SOA 面向服务架构 · SQL Server 2005全解 · Java编程开发手册 · RAID——磁盘阵列基础 |
· 三层交换技术专题 · SQL Server入门到精通 · Windows Server 2003企.. · Windows远程桌面应用 · C#技术开发指南 · VPN技术 · C#技术开发指南 · Solaris 10 配置管理 |
||
|
|||
| · ARP攻击防范与解决方案 · VPN技术 · SQL Server 2005全解 · Java基础教程 · SQL Server入门到精通 · SQL Server 2005全解 · SOA 面向服务架构 · Java编程开发手册 |
· C#技术开发指南 · 三层交换技术专题 · C#技术开发指南 · Windows远程桌面应用 · RAID——磁盘阵列基础 · Windows Server 2003企.. · 邮件服务器专题 · wimax技术与趋势 |
||
| ·DB2 Viper快速入门 ·DB2 9数据库的镜像分割与.. |
·将XML应用程序从DB2 8.x.. ·DB2 9中的pureXML:如何.. |
| ·服务器中的“傻瓜机”在.. ·盖茨也喜欢登录Youtube看.. |
· · |
| ·虚拟化改变操作系统的角.. ·拯救系统管理员 |
·美国选民:我为什么选布什 ·VMware公司中文命名挑战赛 |
| ·体验Windows Server 2008.. ·将超星图书转成PDF文档 |
·使用 Office Communicati.. ·VMware Workstation 6.01.. |
| · 华为、贝恩资本22亿美元.. · NGN:下一代网络 · 网络访问中断大排查 |
· 教你使用Anti ARP Sniff.. · 网络嗅探教程:使用Snif.. · 常见病毒手工清除方法大.. |
| · C++是垃圾语言?! · 2007年IT界七大抄袭事件 · Java实用开发全集 |
· 解析Ajax开发框架 走进A.. · 基于Google Maps与Ajax.. · 基于Google Maps与Ajax.. |
| · 热门 IT 培训认证官方资.. · Ubuntu 中文开源频道 · Solaris基础知识入门 |
· Google推出唯一硬件——.. · 硬盘之父获得诺贝尔物理.. · 理性面对四核服务器选购 |
| · 甲骨文Oracle 11g正式发.. · Oracle数据库开发之PL/S.. · Oracle数据库开发基础教.. |
· 硬盘之父获得诺贝尔物理.. · 存储2006,一个并购的大.. · IDC宣布浪潮蝉联存储市.. |