0

我正在尝试使用转发器显示购物类别及其子类别和子子类别。数据是绑定的,但它没有被显示。任何人都可以帮助为什么?这是我的代码:

.aspx 文件

<asp:Repeater ID="CategoryRepeater" runat="server" OnItemDataBound="CategoryRepeater_OnItemDataBound">
    <ItemTemplate>
        <a href='Clothing.aspx?CategoryId=<%#Eval("CategoryId") %>'<%#Eval("CategoryName") %>></a><br />
        <asp:Repeater ID="SubCategoryRepeater" runat="server" OnItemDataBound="SubCategoryRepeater_OnItemDataBound">
            <ItemTemplate>
                    <a href='Clothing.aspx?CategoryId=<%#Eval("CategoryId") %>&SubCategoryId=<%#Eval("SubCategoryId") %>'<%#Eval("SubCategoryName") %>></a><br />
                <asp:Repeater ID="SubSubCategoryRepeater" runat="server">
                    <ItemTemplate>
                        <a href='Clothing.aspx?CategoryId=<%#Eval("CategoryId") %>&SubCategoryId=<%#Eval("SubCategoryId") %>&SubSubCategoryId=<%#Eval("SubSubCategoryId") %>'<%#Eval("SubSubCategoryName") %>></a><br />
                    </ItemTemplate>
                </asp:Repeater>
            </ItemTemplate>
        </asp:Repeater>

    </ItemTemplate>
</asp:Repeater>

C#代码:

protected void CategoryRepeater_OnItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if ((e.Item.ItemType == ListItemType.Item)||(e.Item.ItemType == ListItemType.AlternatingItem))
    {
        DataRowView dataItem = e.Item.DataItem as DataRowView;
        int categoryId = Convert.ToInt32(dataItem["CategoryId"]);
        Repeater rp = (Repeater)e.Item.FindControl("SubCategoryRepeater");
        ds = us.SelectSubCategories(categoryId);
        rp.DataSource = ds;
        rp.DataBind();
    }
}

protected void SubCategoryRepeater_OnItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if ((e.Item.ItemType == ListItemType.Item)||(e.Item.ItemType == ListItemType.AlternatingItem))
    {
        DataRowView dataItem = e.Item.DataItem as DataRowView;
        int SubCategoryId = Convert.ToInt32(dataItem["SubCategoryId"]);
        Repeater rp1 = (Repeater)e.Item.FindControl("SubSubCategoryRepeater");
        ds1 = us.SelectSubSubCategories(SubCategoryId);
        rp1.DataSource = ds1;
        rp1.DataBind();
    }
}
4

2 回答 2

1

检查您的源代码以确保没有任何内容输出到页面。我认为您只是在锚标记内呈现了类别名称。

这是相同的代码,简化了 eval 以查看发生了什么

<a href='Clothing.aspx?CategoryId={catid}'{name}></a>

应该:

<a href='Clothing.aspx?CategoryId={catid}'>{name}</a>

或者

<a href='Clothing.aspx?CategoryId=<%#Eval("CategoryId") %>'><%#Eval("CategoryName") %></a>

三个地方都犯了同样的错误。

于 2013-07-18T17:17:40.383 回答
1

我认为代码中的一切都是正确的,但是您的输出是错误的。

你正在这样做:

<a href='Clothing.aspx?CategoryId=<%#Eval("CategoryId") %>&SubCategoryId=<%#Eval("SubCategoryId") %>'<%#Eval("SubCategoryName") %>></a><br />

但它需要是

<a href='Clothing.aspx?CategoryId=<%#Eval("CategoryId") %>&SubCategoryId=<%#Eval("SubCategoryId") %>'><%#Eval("SubCategoryName") %></a><br />

注意到我将 '>' 移到了 <%# Eval("SubCategoryName")%> 后面

于 2013-07-18T17:20:07.750 回答