Repeater数据源连接无法正常工作

问题描述 投票:2回答:3

这是我的代码结构。

中继器标记:

<asp:Repeater runat="server" ID="RPMenu" DataSource='<%# Menues.GetAllMainMenu() %>'>
     <ItemTemplate>
          <%# Eval("MenuName") %><br />

          <asp:Repeater runat="server" ID="RPMenuUnder" DataSource='<%# Menues.GetAllMainMenu(Convert.ToInt32(Eval("MenuID"))) %>'>
               <ItemTemplate>
                    <%# Eval("MenuName") %><br />
               </ItemTemplate>
          </asp:Repeater>
     </ItemTemplate>
</asp:Repeater>

菜单类:

public static List<Menu> GetAllMainMenu(int parrentID = 0)
{
    using (Scooterfrøen_Entities db = new Scooterfrøen_Entities())
    {
        return db.Menu.Where(i => i.ParentMenuID == parrentID).ToList();
    }
}

数据库表:MenuID | MenuName | MenuDescription | ParrentMenuID | MenuUrl

我有几行ParentMenuID0NOT NULL

但由于某种原因,Repeater控制没有列出网站上的任何内容。

可能是什么原因导致Repeater控件没有显示任何内容?

c# asp.net entity-framework repeater
3个回答
1
投票

我认为即使你在标记中提供了数据源,页面仍然需要绑定。在页面加载事件中写Page.DataBind();

protected void Page_Load(object sender, EventArgs e)
{
    Page.DataBind();
}

如何使用嵌套的Repeater: 看来你必须处理ParentRepeater_ItemDataBound事件绑定子转发器控件。

查看这篇文章可用here


0
投票

您必须设置值并绑定转发器

RPMenu.DataSource=<value you want to set>;
RPMenu.DataBind();

0
投票

两个现有答案的组合最接近真实。

而不是运行Page.DataBind(),这可能有意想不到的副作用,在RPMenu.DataBind()事件处理程序中运行Page_Load。它将使用在代码前端设置的DataSource

内部中继器应自动绑定。您只需要显式数据绑定最外面的Repeater。

© www.soinside.com 2019 - 2024. All rights reserved.