Преимущества использования источников данных связаны с декларативным программированием : перенести фокус с того, как должна быть выполнена работа, на результаты. Если вы используете источник данных в обязательном порядке, вы потеряете все преимущества.
В этом коде вы предоставляете вашему меню некоторые XML-данные, которые преобразовывают XML-представление DataSet, возвращаемого запросом посредством XSL-преобразования: вам действительно нужно выполнять всю эту работу?
Почему бы не заполнить меню программно?
foreach (DataRow parentItem in ds.Tables[0].Rows)
{
MenuItem item = new MenuItem((string)parentItem["Name"]);
menu.Items.Add(categoryItem);
...
}
или, почему бы не использовать XmlDataSource в aspx:
<asp:XmlDataSource TransformFile="~/TransformXSLT.xsl" XPath="MenuItems/MenuItem" ID="xmlDataSourceMenu" runat="server" />
и в коде позади:
...
xmlDataSourceMenu.Data = ds.GetXml();
...