SqlDataSource和ObjectDataSource控件都是平面表格式的数据源控件,操作也相对简单,在这里我就不细说了.
在这里我主要谈下用于连接XML文件的XmlDataSource和用于连接站点导航数据的SiteMapDataSource这两个层次数据源控件中XmlDataSource数据绑定到平面表格控件的一起东东.

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

<asp:XmlDataSource ID="myXmlDataSource" runat="server" DataFile="~/temp.xml" TransformFile="~transXml" XPath="//User"></asp:XmlDataSource>
表格式数据绑定控件绑定到分层数据源也是可行的,但是它只能显示第一层数据。在下面的demo中,Repeater控件绑定到 temp.xml文件。由于数据源暴露的顶层节点是<User/>节点,Repeater可以在自己的ItemTemplate模板中使用Eval数据绑定语法绑定 到这些节点的属性。
<asp:Repeater runat="server" ID="myReater2" DataSourceID="myXmlDataSource">
    
<HeaderTemplate>标题</HeaderTemplate>
    
<ItemTemplate>
    
<ul>
        
<li>姓名:<%Eval("Name"%></li>
        
<li>Email:<%Eval("Email"%></li>
    
</ul>
    
</ItemTemplate>
    
<FooterTemplate></FooterTemplate>
    
</asp:Repeater>

除了Eval数据绑定语法之外,ASP.NET 2.0还提供了基于XPath的数据绑定语法,在实现了IXPathNavigable接口的任何数据项上都可以使用它。这里介绍两种常用的表达式类型:

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

下面我们来看看使用Xpath数据绑定方法的优势,通过一个demo来说明.

Repeater的ItemTemplate模板另外增加了一个Repeater,并把这个内部Repeater的属性绑定到一个描 述当前User节点的Reply子节点的XPathSelect表达式。在内部Repeater的ItemTemplate模板中,Xpath数据绑 定表达式根据这些"Reply"内容节点来计算值。ASP.NET 2.0利用这种技术,使你能够通过组合表格式数据绑定控件简便地构造出丰富的、分层的数据显示方式。

<asp:Repeater runat="server" ID="myRpeater"  DataSourceID="myXmlDataSource">
    
<HeaderTemplate><ul>标题</HeaderTemplate>
    
<ItemTemplate>
        
<li>ID:<%# XPath("@ID"%></li>
        
<li>姓名:<%#XPath("Name")%></li>
        
<li>Email:<%#XPath("Email")%></li>
        
<li>Content:<%#XPath("Content")%></li>
        
<li>
            
<asp:Repeater runat="server" ID="childRepeater" DataSource='<%# XPathSelect("Reply") %>'>
            
<HeaderTemplate><ul>留言</HeaderTemplate>
            
<ItemTemplate>
                
<ul>
                    
<li>ReplyID:<%#XPath("ID"%></li>
                    
<li>Time:<%# XPath("Time"%></li>
                    
<li>Content:<%# XPath("Content"%></li>
                
</ul>
            
</ItemTemplate>
            
<FooterTemplate></ul></FooterTemplate>
            
</asp:Repeater>
        
</li>
    
</ItemTemplate>
    
<FooterTemplate></ul></FooterTemplate>
    
</asp:Repeater>

posted on 2008-04-15 19:32 西门潇洒 阅读(2128) 评论(12)  编辑 收藏 所属分类: ASP.Net(C#)

  回复  引用  查看    
2008-04-15 20:11 | 李战      
路过,学习了,谢谢。
  回复  引用  查看    
2008-04-15 20:36 | 笑疯^_^      
李兄,你前面的小猴子是怎么加上去的?
  回复  引用  查看    
2008-04-15 21:40 | Jim~      

回复2楼:
请在回复时,选择高级评论


  回复  引用  查看    
2008-04-15 21:52 | Jim~      
感谢楼主分享,我一直不知道repeater怎么在内部添加数据源 哈哈
  回复  引用  查看    
2008-04-15 21:52 | 生鱼片      
支持
  回复  引用  查看    
2008-04-16 09:20 | 阿小南      

  回复  引用  查看    
2008-04-16 09:30 | Boromir      

呵呵 Nice


www.heymusic.cn


  回复  引用  查看    
2008-04-16 09:40 | CJK674      

  回复  引用  查看    
2008-04-16 09:41 | Clark Zheng      
题目太大了吧,本文只是讲了一下XmlDataSource 。感觉ASP.NET中处理XML数据还有很多种方法,适应于不同场合
  回复  引用  查看    
2008-04-16 13:58 | 螞蟻漫步      
學習中,頂!
  回复  引用  查看    
2008-04-16 17:42 | 天生俪姿      
呵呵~!!!!
最近提起这个怎么发的人好多哩~!俺也是这几天才知道的
  回复  引用  查看    
2008-04-16 20:54 | vainnetwork      


标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索


相关链接: