本文主要是介绍【转】关于Repeater 嵌套梆定不明之处,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
【转自 http://www.cnblogs.com/caodaiming/archive/2008/12/18/1357660.html】
今天在网上看到一段代码,是关于Repeater 嵌套的问题,有很多的不明白的地方,希望大家能帮我把这个迷解了;
先看运行的效果:
XML文件:
<?xml version="1.0" encoding="utf-8" ?> <books><book type="计算机"><context>C语言</context><context>C#语言</context><context>C++语言</context></book><book type="小说"><context>爱情小说</context><context>知音小说</context><context>军事动态</context></book> </books>
后台代码:
protected void Page_Load(object sender, EventArgs e){DataSet ds = new DataSet();ds.ReadXml(Server.MapPath("Test.xml"));Repeater1.DataSource = ds;Repeater1.DataBind();} protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e){if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem){Repeater p = (Repeater)e.Item.FindControl("Repeater2");DataRowView drv = (DataRowView)e.Item.DataItem;p.DataSource = drv.CreateChildView("book_context");p.DataBind();}}
前台代码:
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound"><HeaderTemplate>Repeater Test</HeaderTemplate><FooterTemplate></FooterTemplate><ItemTemplate><ul><%#Eval("type") %><br /></ul><asp:Repeater ID="Repeater2" runat="server"><ItemTemplate><%#Eval("context_Text")%><br /></ItemTemplate></asp:Repeater></ItemTemplate>
</asp:Repeater>
不明的地方是:
1、 p.DataSource = drv.CreateChildView("book_context"); 中的“book_context”为什么是这样的参数,修改成其它的参数报错:
去MSDN中查CreateChildView方法解释如下:
如果 DataSet 中的表之间存在关系,则可以使用 DataRowView 的 CreateChildView 方法为父表中的行创建一个 DataView,包含相关子表中的行;具体也没有说明什么,它只是说父表与子表的关系;
2、前面页面代码
<ItemTemplate><%#Eval("context_Text")%><br /> </ItemTemplate>
梆定XML中的context的时候只能是context_Text字段;修改成context是报错;但是按照我们一般性的理解,应该是梆定XML中的字段啊!
这篇关于【转】关于Repeater 嵌套梆定不明之处的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!