datamember 的含义和其他

介绍ASP.NET2.0中处理层次数据的技术,包括使用XmlDataSource和SiteMapDataSource控件,以及TreeView和Menu控件的应用。文章还讨论了绑定到XML数据的方法和XPath数据绑定语法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

您还没有登录![ 快速登录 ][ 登录 ][ 注册 ] 天极传媒: 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 | 
 
首页
数据库
 
基础架构 :
服务器 存储 数据中心 虚拟化
软件:
SOA 管理软件 数据库 开发平台
网络与安全:
网络通信 安全
操作系统:
WinSystem Linux Unix
信息化:
CIO 中小企业IT
新闻
白皮书
专家库
专题
QA烧烤坊
视频
社区
Whatis
焦点推荐
[ 登陆 ] [ 注册 ]
Oracle | Sql Server | DB2 | Mysql | Sybase | 其它数据库 | 专家答疑 | 专家专栏 | 深度分析 | 白皮书
    
 
您现在的位置: IT专家网 > 数据库子站 > 数据库技巧
ASP.NET 2.0中层次数据的处理
作者: 陶刚编译,  出处:天极, 责任编辑: jinpu, 
2006-11-15 08:00
  数据源控件可以同时暴露平面表格式的或层次的数据。前面演示的SqlDataSource和ObjectDataSource控件都是平面表格式的数据源控件。ASP.NET 2.0还包含两个层次数据源控件:用于连接XML文件的XmlDataSource和用于连接站点导航数据的SiteMapDataSource。这一部分将介绍这些控件的使用技术。
 文章导读 1、TreeView和Menu控件 2、绑定到站点导航数据

  数据源控件可以同时暴露平面表格式的或层次的数据。前面演示的SqlDataSource和ObjectDataSource控件都是平面表格式的数据源控件。ASP.NET 2.0还包含两个层次数据源控件:用于连接XML文件的XmlDataSource和用于连接站点导航数据的SiteMapDataSource。这一部分将介绍这些控件的使用技术。

  TreeView和Menu控件

  数据绑定控件与数据源控件类似,也可以是层次的。表格式数据绑定控件显示数据列表或表格,层次数据绑定控件能够用递规方式获取层次数据,在UI中用父-子关系显示数据。ASP.NET 2.0中的分层数据绑定控件的例子有TreeView和Menu控件。下面将介绍把这些控件绑定到层次数据源的一些技术,包括很多示例。

  绑定到XML

  XmlDataSource控件允许其它控件绑定到XML数据。XmlDataSource支持DataFile属性,它被用于指定作为输入(input)的XML数据文件的路径。你还可以指定TranformFile属性,给数据应用XSLT转换;设置XPath属性来指定需要暴露的数据源节点的子集。

  下面的例子演示了一个通过XmlDataSource控件绑定到XML文件的TreeView控件。这个TreeView把每个TreeNode对象的属性与分层树中的XML节点的属性关联起来了(为了进行数据绑定,XML节点的属性都被处理为数据项的属性)。在默认情况下,TreeView控件通过调用对象的ToString()方法简单地显示数据项。它显示了XML节点的元素(element)名称,这样你就可以看到TreeView所绑定的节点层次。它不一定能够显示出你所需要的内容,但它提供了一个很好的出发点,未来你将更容易定制XML数据的显示方式。 <asp:XmlDataSource ID="MySource" DataFile="~/App_Data/Bookstore.xml" runat="server"/>
<asp:TreeView ID="TreeView1" SkinId="Bookstore" DataSourceId="MySource"
ExpandDepth="3" MaxDataBindDepth="3" runat="server" />


  为了让TreeView显示更有意义的内容,你可以为树中的每个节点指定不同的数据绑定。为了定义层次数据项的字段如何映射到TreeNode属性,你可以把TreeNodeBinding对象添加到TreeView的Databindings集合中。TreeNodeBinding的两个重要属性决定了如何在层次数据项集合上使用绑定。DataMember属性指定了数据项的类型或者XML数据中用于绑定的元素名称。Depth属性指定了应用于层次树的数据绑定的深度。你可以设置DataMember或Depth,或者两个属性都设置。例如,如果要定义XML文件中的所有Book元素的数据绑定,只需要把DataMember设置为"Book"。为了定义所有深度为1的节点的数据绑定,只需要把Depth设置为1。如果要定义深度为1的所有Book节点,需要把TreeNodeBinding对象的DataMember设置为"Book",同时把Depth设置为1。

  当你设置了DataMember或Depth用于匹配节点集合之后,就可以定义TreeNodeDataBinding的另外一些属性来定制数据项的属性(或XML数据中的XML节点属性)如何映射到TreeView控件的TreeNode的属性。例如,TextField属性定义了显示为TreeNode文本的属性名称;类似地,ValueField属性定义了作为TreeNode值的数据项属性;NavigateUrlField属性定义了TreeNode导航链接的字段/属性,等等。你还可以为一个已有数据绑定的TreeNode属性指定静态值。例如,指定Book元素的TreeNode使用"Book.gif"图像、设置DataMember属性是"Book"的TreeNodeBinding的ImageUrl属性。

  下面的例子演示了一个绑定到XML数据的TreeView,数据绑定只应用在XML层次树的特定元素上。 <Databindings>
 <asp:TreeNodeBinding DataMember="Bookstore" Text="Bookstore" ImageUrl="~/images/xp/folder.gif" />
 <asp:TreeNodeBinding DataMember="genre" TextField="name" ImageUrl="~/images/xp/folder.gif" />
</Databindings> 


  XmlDataSource支持XPath属性,你可以用它来过滤数据源所暴露的节点集合。在下面的例子中,Xpath属性被设置为Bookstore/genre[@name='Business']/book,以过滤数据源的节点,仅显示"Business"类型下的book元素。在指定XPath属性的语法时要特别小心,否则可能出现数据源任何节点都不暴露的情况(相关的数据绑定控件也不会显示)。 <asp:XmlDataSource ID="MySource" DataFile="~/App_Data/Bookstore.xml" XPath="Bookstore/genre[@name='Business']/book" runat="server"/> 


  请注意,TreeView树准确地匹配了源XML中的层次。由于这个原因,通常会为了绑定到TreeView而具体构造XML,或者为了绑定到TreeView而使用XSL转换重新把数据构造为适当的分层结构。 <asp:XmlDataSource ID="MySource" DataFile="~/App_Data/Bookstore2.xml" TransformFile="~/App_Data/Bookstore2.xsl" XPath="Bookstore/genre[@name='Business']/book" runat="server"/>


  把表格式数据绑定控件绑定到分层数据源也是可行的,但是它只能显示第一层数据。在下面的例子中,模板化的DataList控件绑定到bookstore XML文件。由于数据源暴露的顶层节点是节点,DataList可以在自己的ItemTemplate模板中使用Eval数据绑定语法绑定到这些节点的属性。 <asp:DataList id="MyDataList" DataSourceId="MySource" runat="server">
 <ItemTemplate>
  <img alt="Cover Image" src='<%#"images/" + Eval("ISBN") + ".gif"%>'>
  <%# Eval("Title") %>
  ISBN: <%# Eval("ISBN") %>
  Price: <%# Eval("Price") %>
 </ItemTemplate>
</asp:DataList> 


  虽然只显示一层也是有用的,但是如果能够用嵌套的表格式数据绑定控件来显示下面的层次应该会更好。幸运的是,ASP.NET 2.0允许你实现这种功能。除了Eval数据绑定语法之外,ASP.NET 2.0还提供了基于XPath的数据绑定语法,在实现了IXPathNavigable接口的任何数据项上都可以使用它。有两种可用的表达式类型:

  · XPath(expression, [formatString]) - 根据数据项计算Xpath表达式的值,返回单个值。

  · XPathSelect(expression, [formatString]) - 根据数据项计算Xpath表达式的值,返回节点列表。

  下面的例子是建立在前面的例子基础之上的,它用Xpath数据绑定表达式代替Eval表达式绑定到book节点的属性。从表面上看,这样的操作与每个表达式的"@"前缀相比没有什么更多功能,只是用于引用节点属性的Xpath语法。但是,Xpath的真正灵活性就是依赖于这种引用层次中的任意项(不仅仅是属性)的能力的。

  这个示例给外部DataList的ItemTemplate模板另外增加了一个DataList,并把这个内部DataList的属性绑定到一个描述当前book节点的chapter子节点的XPathSelect表达式。在内部DataList的ItemTemplate模板中,Xpath数据绑定表达式根据这些"chapter"内容节点来计算值。ASP.NET 2.0利用这种技术,使你能够通过组合表格式数据绑定控件简便地构造出丰富的、分层的数据显示方式。 <asp:DataList id="MyDataList" DataSourceId="MySource" runat="server">
<ItemTemplate>
 <img alt="Cover Image" src='<%# "images/" + XPath("@ISBN") + ".gif" %>'>
 <%# XPath("@Title") %>
 ISBN: <%# XPath("@ISBN") %>
 Price: <%# XPath("@Price") %>

 <asp:DataList id="MyDataList" DataSource='<%# XPathSelect("chapter") %>' runat="server">
 <ItemTemplate>
 Chapter <%# XPath("@num") %>:
 <%# XPath("@name") %>
 <%# XPath(".") %>
</ItemTemplate>
</asp:DataList>

</ItemTemplate>
</asp:DataList>
 


  为了处理数据绑定控件对特定位置的节点的请求,XmlDataSource等层次数据源控件让层次中的每个节点与唯一的路径相对应。这样就带来了一些特性,例如TreeView的按需求填充(PopoulateOnDemand)特性,当某个节点被扩展的时候,来自数据源的节点才被发送到客户端,而不是一次性地发送所有的节点。它也允许你在页面代码中用这种方式配置数据源来显示特定位置的节点。不同的数据类型的路径语法是不同的,而且不能在代码中构造。但是,你可以使用TreeNode的DataPath属性来访问绑定到TreeView的节点的数据路径。由于XmlDataSource把Xpath表达式作为自己的数据路径语法,这些路径也可以指定给XmlDataSource的Xpath属性来进行节点列表的过滤。下面的例子演示了 这种技术,它使用XmlDataSource实现了一个主-从表。例子中有两个XmlDataSource控件,其中一个绑定到TreeView(主表控件),另一个绑定到DataList(从表控件)。当用户点击TreeView节点的时候,就检索它的DataPath属性,并把它赋予绑定到DataList的XmlDataSource控件,以显示被点击的节点的详细信息。 Sub MyTreeView_SelectedNodeChanged(sender As Object, e As EventArgs)
 Dim path As String = MyTreeView.SelectedNode.DataPath
 MyDetailsSource.XPath = path
 MyDataList.DataSource = MyDetailsSource
 MyDataList.DataBind()
End Sub


  

第1页:TreeView和Menu控件
第2页:绑定到站点导航数据
共2页。 1 2 :
本文关键词:
最新评论
还没有评论,查看其他精彩评论
网友评论
   登录 取消
笔名   
     请输入评论
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。

相关文章
深入浅出SQL教程之SELECT语句表连接
ASP.NET中如何防范SQL注入式攻击
深入浅出SQL教程之子查询语句
深入浅出SQL教程之Group by和Having
存储过程编写经验和优化措施
深入浅出SQL系列教程之基本SELECT命令
深入浅出SQL系列教程之SQL语言简介
Oracle 10g中用FIRALL处理非连续数组
MySQL查询的性能优化
Oracle回滚段表空间文件丢损的处理
最新文章
T-SQL调试器重返SQL Server 2008
巧妙规划使用Oracle数据空间
用SQL语句完成SQL Server数据库的修复
ACCESS数据库中Field对象的caption属性读写
多个SQL Server数据库的数据库镜像自动故障转移
SQL 2008的变更数据捕获——跟踪可变部分
为Access 2007建立右键菜单
通过事务日志解决SQL Server常见四大故障(二)
通过事务日志解决SQL Server常见四大故障(一)
如何找出什么SQL Server权限被授予公共角色

邮件订阅
 
    
该文章的读者还阅读了
Oracle FAQ 之OS相关与其它篇
连接到Adaptive Server Anywhere数据库
解析:如何在数据库中存储 Java 指令?
快速掌握SQL改变端口后怎样再进行连接
关于Access数据库4种安全方式
需要多少重做日志(redo log)文件?
SQL Server 2005 Express:超越基础
实例解析:使用ODBC 示例来访问数据库
数据库性能调优:理解嵌套循环执行计划
数据库性能调优:深入理解单表执行计划
热门排行
奥运嘉年华
MySQL数据库之UPDATE更新语句精解
扫描SQL Server数据库以查找文本值的对象和字段
如何在SQL Server计算列中创建索引
并行查询让SQL Server加速运行
SQL 2008 Report Builder 2.0简介(一)
Oracle PL/SQL过程调试的输出方法
分步启动数据库以重命名数据文件
跨域执行SQL Server 2005的数据库镜像
几个步骤搞定度量基线的设置(一)
利用SQL Server CLR函数连接一个字段中的值
2009年主流存储厂商大预测
牛年牛气旺 你发文章我奖钱!
两台MOTO A3000免费玩,还有精美礼品等你拿
电脑下乡--谁主沉浮?你来选选!!
一直在等你_QQ空间欢迎动画免费代码
分享用U盘给笔记本安装XP系统的经验
IT卖场宝贝大搜索 美女真人照片征集中
娱乐:真人版超级玛丽!!不雷你抽我!
技展彩钢机箱半价团购活动开启
3月人人不差钱 周周送网友惊喜奖品!
热点专题
社区
IBM informix培训教材
Oracle10g内部培训ppt
ORACLE备份&恢复案例
SQL语言参考大全(CHM版)
oracle 编程艺术 英文原版pdf
ORACLE 10G RAC参考手册
MYSQL高级配置和管理
ORACLE 10G RAC参考手册
[下载]Oracle数据库容灾和备份方案
MYSQL数据库大进击
白皮书
专家答疑
SQL Server 2008(BI)PPT下载
重建SQL Server的master数据库(三)
重建SQL Server的master数据库(二)
Panorama商务智能分析解决方案
中海油基于IBM FileNet P8构筑海外业务管理系统
交通银行构建流程银行体系下的ECM平台
迈进集约之路--泰康人寿ECM平台助力集约化经营
SQL Server 2008用在零售行业的预测分析
SQL Server 2008与Oracle Database 11g相比较
SQL Server集成服务用于Oracle Database 10g
捕捉一个SQL Server会话的所有语句
T-SQL调试器重返SQL Server 2008
多个SQL Server数据库的数据库镜像自动故障转移
如何找出什么SQL Server权限被授予公共角色
跨域执行SQL Server 2005的数据库镜像
如何在SQL Server计算列中创建索引
利用SQL Server CLR函数连接一个字段中的值
Whatis
数据库名词解释
Oracle约束
数据库范式
LINQ
联机公共检索目录
OPAC
Online Public Access Catalog
COD
capacity on demand
按需扩容
Fixed Data
Topic Map Query Language
Python
80
6 Sigma
5GL
4GL
404
3NF
3GL
天极服务 | 关于我们 | About us | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 网站地图
 
All Rights Reserved, Copyright 2004-2009, Ctocio.com.cn
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值