2012-04-20 2 views
-1

Я хочу сделать динамическое горизонтальное динамическое 3-уровневое меню из БД с помощью ретранслятора, я могу сделать первый уровень, а затем застрять, я не знаю, как это сделать, и какие лучшие запросы получить подменю и subsubmenue ... из БД может ли один помочь мне, что я использовал это для первого уровня ...3-уровневый ретранслятор

 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(); 
      } 
      } 
+2

С чем вы столкнулись с трудностями? Где вы застряли? – Oded

ответ

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; 
+0

самая сложная проблема - это третий уровень .... – ninoal

0

Что вы сделали до сих пор, это нормально. Гнездо три повторителя и прочитайте уровни меню отдельно.

Прочитайте только первый уровень меню, как вы это делали, затем в методе OnItemDataBound для rptLevel1 сделайте то же самое снова для пунктов меню второго уровня. Еще раз для третьего уровня, и вы там.

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 
} 
+0

ok, но можете ли вы рассказать, какой запрос принести подзаголовок .... ive принести первый уровень с помощью меню без родителя, но как насчет суб-юга – ninoal

+0

и как каждое меню будет знать своего родителя – ninoal

+0

nth работает, я не смог найти решение im, все еще застрявшее .... – ninoal

Смежные вопросы