-1

我想使用中继器从数据库制作动态水平动态 3 级菜单我可以制作第一级然后卡住我不知道该怎么做以及获取子菜单和子子菜单的最佳要求是什么......从DB可以帮助我吗?我将它用于第一级...

     try
         {

             con.Open();
             reader = cmd1.ExecuteReader();

             List<menus> types = new List<menus>();

             while (reader.Read())
             {
                 types.Add(new menus() { ID = (int)reader["MenuID"], Name = reader["MenuName"].ToString(), page = reader["Page"].ToString(), Parent = (int)reader["Parent"],Order = (int)reader["Order"] });

             }
            rptlevel1.DataSource = types;
            rptlevel1.DataBind();
             con.Close();
         }
         catch (Exception)
         {
             if (reader != null)
             {
                 reader.Close();
             }
             if (con.State == System.Data.ConnectionState.Open)
             {
                 con.Close();
             }
             }
4

2 回答 2

0

您需要做的是如下所示:

repeater1_ItemDataBound
{
    //Get datasource for the current data item

    //Find child repeater control within this

    //Bind to the datasource
}

对中继器的第二层重复此操作。


至于您的评论 - 在此 itemdatabound 中,找到您的第二个转发器并将其设置为 itemdatabound 事件,例如

rptOne.ItemDatabound += BindThirdRepeater;
于 2012-04-20T15:05:05.677 回答
0

到目前为止,您所做的一切都很好。嵌套三个中继器并分别阅读菜单级别。

像以前一样只读取第一级菜单,然后在 rptLevel1 的 OnItemDataBound 方法中,再次读取第二级菜单项。再一次达到第三级,你就在那里。

1st level read

protected void rptLevel1_ItemDataBound(object sender, RepeaterItemEventArgs e) {
    2nd level read
}

protected void rptLevel3_ItemDataBound(object sender, RepeaterItemEventArgs e) {
    3rd level read
}
于 2012-04-20T15:07:05.377 回答