0

dynamicdriveの JavaScript メニューを使用しています

データベースからメニュー項目を取得しようとしました。私のaspxファイルにはメニューが含まれており、静的メニューの場合は正常に機能します。テーブルまたはクエリが実際に生成するもの:

IdPage int, PageTitle varchar(20), PageFileUrl varchar(30), ParentIdPage int

私のデータ取得方法

    DataRow[] dataRowParent = _dataTable.Select("[ParentIdPage]=" + 0);
     foreach (DataRow dr in dataRowParent)
     {
        HtmlGenericControl li = new HtmlGenericControl("li");
        //  add <a> 
        HtmlGenericControl hlink = new HtmlGenericControl("a");

        if (dr["PageFileUrl"].ToString() == "") // this item has a submenu.
        {
            li.Attributes.Add("rel", "ddsubmenu" + dr["IdPage"].ToString());

            hlink.Attributes.Add("href", "#");// link should be # when no direct link
            hlink.InnerText = dr["PageTitle"].ToString();
            li.Controls.Add(hlink);

            ulTopMenu.Controls.Add(li);

            AddNewUl((int)dr["IdPage"]);
            AddSubmenuItems(_dataTable, (int)dr["IdPage"]);
         }
        else // Direct link ,no submenu
        {
            hlink.Attributes.Add("href", dr["PageFileUrl"].ToString());
            hlink.InnerText = dr["PageTitle"].ToString();
            li.Controls.Add(hlink);

            ulTopMenu.Controls.Add(li);
        }
    }
}
 private void AddSubmenuItems(DataTable dataTable, int menuId)
{
    // create related sub menu  
    DataView dataView = new DataView(dataTable);
    dataView.RowFilter = "ParentIdPage=" + menuId;

    foreach (DataRowView subMenuItem in dataView)
    {
          // find related <ul>
        HtmlControl ulControl = (HtmlControl)FindControl("ddsubmenu" + menuId);
        //  Add new <li><a href="PageFileUrl.aspx" >page title</a> </li>
        HtmlGenericControl li = new HtmlGenericControl("li");

        HtmlGenericControl hlink = new HtmlGenericControl("a");
        hlink.Attributes.Add("href", subMenuItem["PageFileUrl"].ToString());
        hlink.InnerText = subMenuItem["PageTitle"].ToString();

        li.Controls.Add(hlink);
        li.InnerText = subMenuItem["PageTitle"].ToString();
        li.Attributes.Add("href", subMenuItem["PageFileUrl"].ToString());

        ulControl.Controls.Add(li);
    }
}

 private void AddNewUl(int menuId)
  {
    // Add new <ul id="ddsubmenu00" class= "ddsubmenustyle">
    HtmlGenericControl newUl = new HtmlGenericControl("ul");
    // Set the attributes of the new ul.
    newUl.ID = "ddsubmenu" + menuId;
    newUl.Attributes.Add("class", "ddsubmenustyle");
     placeHolder1.Controls.Add(newUl);
  }

私の問題は、サブメニューが表示されないことです!、何が問題なのですか? 助けていただければ幸いです。

4

1 に答える 1

0

どうもありがとう、ついに私はそれを理解しました:
この行を置き換えてください

         li.Attributes.Add("rel",""+ "ddsubmenu" + dr["IdPage"].ToString()+"");

これで:

        hlink.Attributes.Add("rel",""+ "ddsubmenu" + dr["IdPage"].ToString()+"");

今では正しく動作します:-)

于 2013-06-22T11:40:09.903 に答える