-1

リピーターを使用して DB から動的な水平動的 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

これまでに行ったことは問題ありません。3 つのリピーターをネストし、メニュー レベルを個別に読み取ります。

行ったように最初のメニュー レベルだけを読み取り、rptLevel1 の OnItemDataBound メソッドで、2 番目のレベルのメニュー項目を再度読み取ります。もう一度レベル 3 に進みます。

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 に答える
0

あなたがする必要があるのは、次のようなものです:

repeater1_ItemDataBound
{
    //Get datasource for the current data item

    //Find child repeater control within this

    //Bind to the datasource
}

これを 2 層目のリピーターに対して繰り返します。


あなたのコメントについて-このitemdataboundで、2番目のリピーターを見つけて、itemdataboundイベントを設定します。

rptOne.ItemDatabound += BindThirdRepeater;
于 2012-04-20T15:05:05.677 に答える