Help me with repeater control?
Anyone can help me. The following is problem.
I want create a navigation menu depend on file XML datasource?
I want use Nested Repeater and XML Data create a menu as:
[list]
<li>AAAA</li>[list]
<li>aaa</li>
<li>aaa</li>[list]
<li>BBBB</li>[list]
<li>bbbb</li>
</ul>
</ul>
<?xml version="1.0" encoding="utf-8" ?>
<Data>
<MenuItem>
<ID>1</ID>
<ParentID>0</ParentID>
<Icon></Icon>
<Text>AA</Text>
<NavigatiorUrl></NavigatiorUrl>
<CssClass>MLeftMenuItem</CssClass>
</MenuItem>
<MenuItem>
<ID>2</ID>
<ParentID>1</ParentID>
<Icon></Icon>
<Text>aaa</Text>
<NavigatiorUrl></NavigatiorUrl>
<CssClass>MLeftChildMenuItem</CssClass>
</MenuItem>
<MenuItem>
<ID>3</ID>
<ParentID>1</ParentID>
<Icon></Icon>
<Text>aaaaa</Text>
<NavigatiorUrl></NavigatiorUrl>
<CssClass>MLeftChildMenuItem</CssClass>
</MenuItem>
<MenuItem>
<ID>4</ID>
<ParentID>1</ParentID>
<Icon></Icon>
<Text>aaaa</Text>
<NavigatiorUrl></NavigatiorUrl>
<CssClass>MLeftChildMenuItem</CssClass>
</MenuItem>
<MenuItem>
<ID>5</ID>
<ParentID>1</ParentID>
<Icon></Icon>
<Text>aaaaa</Text>
<NavigatiorUrl></NavigatiorUrl>
<CssClass>MLeftChildMenuItem</CssClass>
</MenuItem>
<MenuItem>
<ID>6</ID>
<ParentID>0</ParentID>
<Icon></Icon>
<Text>BBBBB</Text>
<NavigatiorUrl></NavigatiorUrl>
<CssClass>MLeftMenuItem</CssClass>
</MenuItem>
<MenuItem>
<ID>7</ID>
<ParentID>6</ParentID>
<Icon></Icon>
<Text>bbb</Text>
<NavigatiorUrl></NavigatiorUrl>
<CssClass>MLeftChildMenuItem</CssClass>
</MenuItem>
<MenuItem>
<ID>8</ID>
<ParentID>6</ParentID>
<Icon></Icon>
<Text>bbbb</Text>
<NavigatiorUrl></NavigatiorUrl>
<CssClass>MLeftChildMenuItem</CssClass>
</MenuItem>
<MenuItem>
<ID>9</ID>
<ParentID>6</ParentID>
<Icon></Icon>
<Text>bbbbb</Text>
<NavigatiorUrl></NavigatiorUrl>
<CssClass>MLeftChildMenuItem</CssClass>
</MenuItem>
<MenuItem>
<ID>10</ID>
<ParentID>6</ParentID>
<Icon></Icon>
<Text>bbbb</Text>
<NavigatiorUrl></NavigatiorUrl>
<CssClass>MLeftChildMenuItem</CssClass>
</MenuItem>
<MenuItem>
<ID>11</ID>
<ParentID>6</ParentID>
<Icon></Icon>
<Text>bbbb</Text>
<NavigatiorUrl></NavigatiorUrl>
<CssClass>MLeftChildMenuItem</CssClass>
</MenuItem>
<MenuItem>
<ID>12</ID>
<ParentID>6</ParentID>
<Icon></Icon>
<Text>bbbb</Text>
<NavigatiorUrl></NavigatiorUrl>
<CssClass>MLeftChildMenuItem</CssClass>
</MenuItem>
<MenuItem>
<ID>13</ID>
<ParentID>6</ParentID>
<Icon></Icon>
<Text>bbb</Text>
<NavigatiorUrl></NavigatiorUrl>
<CssClass>MLeftChildMenuItem</CssClass>
</MenuItem>
<MenuItem>
<ID>14</ID>
<ParentID>6</ParentID>
<Icon></Icon>
<Text>bbb</Text>
<NavigatiorUrl></NavigatiorUrl>
<CssClass>MLeftChildMenuItem</CssClass>
</MenuItem>
<MenuItem>
<ID>15</ID>
<ParentID>0</ParentID>
<Icon></Icon>
<Text>CCCCC</Text>
<NavigatiorUrl></NavigatiorUrl>
<CssClass>MLeftMenuItem</CssClass>
</MenuItem>
</Data>
My code:
<div id="navigation">
[list]
<asp:Repeater runat="server" ID="menu" >
<ItemTemplate>
<li>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="....."><%# If(eval("parentID")==0) eval("Name") %></asp:HyperLink>
<asp:Repeater ID="Repeater1" runat="server" >
<HeaderTemplate>
[list]
</HeaderTemplate>
<ItemTemplate>
<li>
<asp:HyperLink ID="HyperLink2" runat="server" NavigateUrl="...."><%# Eval("Name") %></asp:HyperLink>
</li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>
</li>
</ItemTemplate>
</asp:Repeater>
</ul>
</div>
behin code:
private string xmlSource = string.Empty;
protected void Page_Load(object sender, System.EventArgs e)
{
rptMenu.DataSource = GetMenu();
rptMenu.DataBind();
}
private ArrayList GetMenu()
{
try
{
xmlSource = lblXmlSource.Text;
xmlSource = Server.MapPath(xmlSource);
XmlDocument doc = new XmlDocument();
doc.Load(xmlSource);
ArrayList menu = new ArrayList();
XmlNodeList list = doc.SelectNodes("Data/MenuItem");
foreach (XmlNode node in list)
{
try
{
int id = int.Parse(node.SelectSingleNode("ID").InnerText);
string name = node.SelectSingleNode("Text").InnerText;
int parentID = int.Parse(node.SelectSingleNode("ParentID").InnerT ext);
string cssClass = node.SelectSingleNode("CssClass").InnerText;
MenuItems item = new MenuItems(id, parentID, name, cssClass, string.Empty, true);
menu.Add(item);
}
catch
{
continue;
}
}
return menu;
}
catch (Exception ex)
{
return null;
}
}
|