带有SiteMap数据源的GridView - 显示子节点

时间:2012-11-29 05:43:45

标签: .net gridview sitemap

网页:

<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0">
    <siteMapNode  url="" title="hello"  description="hello">
        <siteMapNode  url="~/WFM1.aspx" title="WFM1"  description="This is WFM1" />
        <siteMapNode url="~/WFM2.aspx" title="WFM2"  description="This is WFM2" />
    </siteMapNode>
</siteMap>

.aspx:

  <asp:GridView ID="GridView1" runat="server"  DataSourceID="SiteMapDataSource1" Height="52px" style="margin-right: 2px; margin-top: 9px" Width="215px">
            <Columns >
                <asp:BoundField DataField="Description" HeaderText="Description" ReadOnly="True" SortExpression="Description" />
                <asp:BoundField DataField="Title" HeaderText="Title" ReadOnly="True" SortExpression="Title" />
                <asp:BoundField DataField="Url" HeaderText="Url" ReadOnly="True" SortExpression="Url" />
            </Columns>

        </asp:GridView>

由于某种原因,它只显示父节点。我想知道我是不是得到了什么,但我想在GridView中显示两个孩子。不要问我为什么需要以这种特殊的方式去做。 (我也不知道 - 欢迎来到学术界)

上下文:VS2012:U

enter image description here

1 个答案:

答案 0 :(得分:0)

我正在简化您的代码,但为什么不使用ChildNodes作为数据源来嵌套Gridview控件?如果更好地满足您的目的,您也可以在Repeater中执行此操作。

<asp:GridView ID="GridView1" runat="server"  DataSourceID="SiteMapDataSource1" Height="52px" style="margin-right: 2px; margin-top: 9px" Width="215px">
    <Columns>
            <asp:TemplateField>
                    <ItemTemplate>
                            <asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="true" DataSource='<%#Eval("ChildNodes")%>'></asp:GridView>
                        </ItemTemplate>
                    </asp:TemplateField>
        </Columns>
</asp:GridView>