0
XMLファイルからプログラムでWebサイトのメニューを作成しようとしています。 メニューには、メニューバーに3つのリンクがあり、マウスオーバーイベントで展開し、 コンテンツ(リンクと画像)を表示します。 xmlファイルにはMenuItemノードがあり、 はメニューバーの3つのリンクに対応し、MenuContentノードはに対応しています。疑似コードでは、 には次のようにします:LINQ to XMLグループ化
- xmlファイルを読んでください。
- xmlファイルをMenuItemノードでグループ化します。
- 外部リピータにMenuItemデータを設定します。
- 各MenuItemノードに対して、MenuContentデータを内部リピータに取り込みます。
私の問題は、MenuItemノードを適切にグループ化する方法がわからず、 が内部リピータに移入することです。グループ化のC#コードは、 が古いプロジェクトでは動作していましたが、この場合は機能しません。私はちょうどそこにいくつかのコードを取得 にそれを含めた。
どのようにC#コードをMenuItem ノードでグループ化して内部リピータに取り込むことができますか?
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<div>
<asp:Repeater ID="Repeater2" runat="server">
<ItemTemplate>
<div class="menuContent">
<div>
<div class="menuContentItem">
<a href='<%# Eval("LinkUrl") %>'>
<table>
<tr>
<td align="center" valign="middle">
<img src='<%# Eval("ImageUrl") %>' alt='<%# Eval("ImageToolTip") %>' />
</td>
<td align="left" valign="top">
<div><%# Eval("Title") %></div>
<div><%# Eval("Description") %></div>
</td>
</tr>
</table>
</a>
</div>
</div>
</div>
</ItemTemplate>
</asp:Repeater>
</div>
</ItemTemplate>
</asp:Repeater>
var menuPath = Server.MapPath("~/Menu.xml");
var xDocument = XDocument.Load(menuPath);
var menuItems = new List<MenuItem>();
var groups = (from x in xDocument.XPathSelectElements("Menu")
group x by new
{
Description = x.Descendants("Description").FirstOrDefault().Value,
ImageToolTip = x.Descendants("ImageToolTip").FirstOrDefault().Value,
ImageUrl = x.Descendants("ImageUrl").FirstOrDefault().Value,
LinkUrl = x.Descendants("LinkUrl").FirstOrDefault().Value,
Title = x.Descendants("Title").FirstOrDefault().Value
} into g
select g).ToDictionary(g => g.Key, g => g.ToArray());
Repeater1.DataSource = groups;
Repeater1.DataBind();
<?xml version="1.0" encoding="utf-8" ?>
<Menu>
<MenuItem>
<MenuContent>
<Title>Title 1a</Title>
<Description>Description 1a</Description>
<LinkUrl>Link URL 1a</LinkUrl>
<ImageUrl>Image URL 1a</ImageUrl>
<ImageToolTip>Image ToolTip 1a</ImageToolTip>
</MenuContent>
<MenuContent>
<Title>Title 2a</Title>
<Description>Description 2a</Description>
<LinkUrl>Link URL 2a</LinkUrl>
<ImageUrl>Image URL 2a</ImageUrl>
<ImageToolTip>Image ToolTip 2a</ImageToolTip>
</MenuContent>
<MenuContent>
<Title>Title 3a</Title>
<Description>Description 3a</Description>
<LinkUrl>Link URL 3a</LinkUrl>
<ImageUrl>Image URL 3a</ImageUrl>
<ImageToolTip>Image ToolTip 3a</ImageToolTip>
</MenuContent>
</MenuItem>
<MenuItem>
<MenuContent>
<Title>Title 1b</Title>
<Description>Description 1b</Description>
<LinkUrl>Link URL 1b</LinkUrl>
<ImageUrl>Image URL 1b</ImageUrl>
<ImageToolTip>Image ToolTip 1b</ImageToolTip>
</MenuContent>
<MenuContent>
<Title>Title 2b</Title>
<Description>Description 2b</Description>
<LinkUrl>Link URL 2b</LinkUrl>
<ImageUrl>Image URL 2b</ImageUrl>
<ImageToolTip>Image ToolTip 2b</ImageToolTip>
</MenuContent>
<MenuContent>
<Title>Title 3b</Title>
<Description>Description 3b</Description>
<LinkUrl>Link URL 3b</LinkUrl>
<ImageUrl>Image URL 3b</ImageUrl>
<ImageToolTip>Image ToolTip 3b</ImageToolTip>
</MenuContent>
</MenuItem>
</Menu>
パーフェクト!まさに私がする必要があった!どうもありがとうございます! – Halcyon