`
北极的。鱼
  • 浏览: 151783 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

【转】关于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中的字段啊!

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics