2011-12-09 8 views
1

私が見つけたBind ASP.NET Menu control to XML質問が私の問題を見つけるのに役立ちます。今、私が直面しています問題は、私はそれがダウンして、通常のドロップを持っていると思います。それに接続されているメニューを拡充などにもメインメニュー(私のメニューは次のようになります。私はそれを達成することはできますか?XMLファイルのASP.NETメニュー、右下にドロップダウンがあります。

enter image description here

マイXMLFILE装着されている。私は、ルートタグを削除しようとしたが、それは、XMLファイルではありませんよりも、それはコードを壊す。

<?xml version="1.0" encoding="utf-8" ?> 
<menu> 
    <menuItem> 
     <text> 
      &lt;img align="middle" src="images/new.gif" width="32" 
      height="16" /&gt; What's New? &lt;img align="middle" 
      src="images/right.gif" width="16" height="16" /&gt; 
     </text> 
     <subMenu> 
      <menuItem> 
       <text>&amp;nbsp;&amp;nbsp;&amp;nbsp;New Articles</text> 
       <url>/suboption1.1.html</url> 
      </menuItem> 
      <menuItem> 
       <text>&amp;nbsp;&amp;nbsp;&amp;nbsp;New FAQs</text> 
       <commandName>NewFAQ</commandName> 
      </menuItem> 
     </subMenu> 
    </menuItem> 
    <menuItem> 
     <text> 
      &lt;img align="middle" src="images/paw.gif" width="20" 
      height="16" /&gt; Animal Facts &lt;img align="middle" 
      src="images/right.gif" width="16" height="16" /&gt; 
     </text> 
     <url>/option2.html</url> 
     <subMenu> 
      <menuItem> 
       <text> 
        <![CDATA[<img align="middle" src="images/paw.gif" 
       width="20" height="16" /> Animal Facts <img 
       align="middle" src="images/right.gif" width="16" 
       height="16" />]]> 
       </text> 
       <url>/suboption2.1.html</url> 
       <subMenu> 
        <menuItem> 
         <text>Facts about Terriers</text> 
         <url>/suboption2.1.1</url> 
        </menuItem> 
        <menuItem> 
         <text>Facts about Beagles</text> 
         <url>/suboption2.1.2</url> 
        </menuItem> 
        <menuItem> 
         <text>Facts about Great Danes</text> 
         <url>/suboption2.1.3</url> 
        </menuItem> 
        <menuItem> 
         <text>Facts about Poodles</text> 
         <url>/suboption2.1.4</url> 
        </menuItem> 
       </subMenu> 
      </menuItem> 
      <menuItem> 
       <text> 
        &amp;nbsp;&amp;nbsp;&amp;nbsp;Facts About 
        Goats 
       </text> 
       <url>/suboption2.2.html</url> 
      </menuItem> 
      <menuItem> 
       <text> 
        &amp;nbsp;&amp;nbsp;&amp;nbsp;Facts About 
        Snakes 
       </text> 
       <url>/suboption3.2.html</url> 
      </menuItem> 
     </subMenu> 
    </menuItem> 
    <menuItem> 
     <text> 
      &lt;img align="middle" src="images/email.gif" width="18" 
      height="18" /&gt; Contact 
     </text> 
     <url>mailto:[email protected]</url> 
    </menuItem> 
</menu> 

追加コード

protected void Page_Load(object sender, EventArgs e) 
{ 

    if (!Page.IsPostBack) 
    { 
     MainMenu.DataSource = GetSiteMapDataSource("firtmenu.xml"); 
     MainMenu.DataBind(); 
    } 
} 

private XmlDataSource GetSiteMapDataSource(string siteMapFileName) 
{ 
    if (siteMapFileName != string.Empty) 
    { 
     XmlDataSource xmlSource = new XmlDataSource(); 
     xmlSource.DataFile = siteMapFileName; 
     xmlSource.DataBind(); 
     return xmlSource; 
    } 
    else 
    { return null; } 
} 
+0

XMLReaderを使用してXMLを解析し、それからメニューを作成するのはなぜですか? – CBRRacer

+0

私は簡単な解決策が必要です。私はこれを発見し、それはこの問題を持っています。他のオプションを試すことができます –

答えて

0

それは可能でないように見える

マイクロソフトでは、this linkで、XMLにはメニュー、menuitem、およびプロパティを持つxmlのルート要素と適切な構造が必要です。

Menuクラスは、XMLファイルへ 文字列のパスまたはすでに 適切なXMLデータをロードしていたXmlDocumentインスタンスのいずれかを受け入れることができDataSourceプロパティが含まれています。具体的には、XMLデータは のルート要素と、任意の数の 要素を持つ必要があります。各要素には、 にメニュー項目に表示するテキストを指定する要素と、オプションの と要素が必要です。メニュー項目にサブメニューがある場合、 要素には、要素が含まれている必要があります。 要素のように、任意の数の要素を持つことができます。

はさらに...

は、私は同じ質問をしsitepoint、上で同様のスレッドを発見しました。解決策は、XPATHを使用して結果をフィルタリングしています。私の例では、あなたは使用します

XmlDataSource xmlSource = new XmlDataSource();    
xmlSource.XPath = "/menu/menuItem"; // Notice XPAth filter in this line 
xmlSource.DataFile = siteMapFileName; 

それはXMLをフィルタリングしますが、より多くの問題を引き起こします。これは、ルート要素が示されていない

  1. すべてのサブメニューが自動的に展開されている(私たちは、などのファイル編集などのメニューの見出しを必要とする)です。その上にマウスを置くと、サブメニューが展開されます。

Microsoftの実装がうまくいかないようです。それは実装ではなくむしろこれを行い、その結果、結果はありません。

関連する問題