Создайте свой ретранслятор так:
<asp:Repeater ID="rptTest" runat="server" OnItemDataBound="rptTest_ItemDataBound">
<ItemTemplate>
<asp:HyperLink ID="lnkTest" runat="server" />
</ItemTemplate>
</asp:Repeater>
Свяжите свой ретранслятор с объектом IEnumerable<XElements>
items.
XDocument doc = XDocument.Load(Server.MapPath("~/xml/gallery.xml"));
IEnumerable<XElement> items = from item in doc.Descendants("item")
orderby Convert.ToDateTime(item.Attribute("lastChanges").Value) descending
where int.Parse(item.Attribute("galleryID").Value) == 0 && bool.Parse(item.Attribute("visible").Value) != false
select item;
rptTest.DataSource = items;
rptTest.DataBind();
А затем привяжите данные OnItemDataBound в коде, подобном следующему:
void rptTest_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
XElement item = (XElement)e.Item.DataItem;
HyperLink lnkTest = (HyperLink)e.Item.FindControl("lnkTest");
lnkTest.NavigateUrl = "Page?id=" + item.Attribute("id").Value;
lnkTest.Text = item.Attribute("name").Value;
}
Вот как я это сделаюЯ обнаружил, что у меня намного больше контроля над OnItemDataBound, чем при попытке передать данные непосредственно на страницу ASP.Net.