У меня есть следующий код:
XElement Categories =
new XElement("Promotions",
from b in db.GetPromotions()
select new XElement("Promotion",
new XElement ("Category",b.CategoryName),
new XElement("Client",b.ClientName),
new XElement("ID",b.ID),
new XElement("Title",b.Title)));
XDocument mydoc = new XDocument();
mydoc.Add(Categories);
try
{
// Load the style sheet.
XslTransform xslt = new XslTransform();
xslt.Load(@"C:\Web\DesktopModules\Promotions\TransList.xslt");
// Execute the transform and output the results to a writer.
StringWriter sw = new StringWriter();
//XsltSettings mysettings = new XsltSettings();
XmlWriterSettings mysettings = new XmlWriterSettings();
xslt.Transform(mydoc.CreateReader(),null, sw);
String mstring = sw.ToString();
Генерирует следующую строку:
<ul id="red" class="treeview-red" xmlns:asp="http://schemas.microsoft.com/ASPNET/20">
<li><span>Arts & Entertainment</span><ul>
<li><span>Client 1</span><ul>
<li><span><asp:LinkButton ID="LinkButton2" runat="server" OnClick="LinkClicked" Text="Get your Free 2" /></span></li>
<li><span><asp:LinkButton ID="LinkButton4" runat="server" OnClick="LinkClicked" Text="Get your Free 4" /></span></li>
<li><span><asp:LinkButton ID="LinkButton5" runat="server" OnClick="LinkClicked" Text="Get your Free 5" /></span></li>
</ul>
</li>
</ul>
</li>
<li><span>Community & Neighborhood</span><ul>
<li><span>Client 2</span><ul>
<li><span><asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkClicked" Text="Get your Free 1" /></span></li>
</ul>
</li>
</ul>
</li>
<li><span>Education</span><ul>
<li><span>Client 3</span><ul>
<li><span><asp:LinkButton ID="LinkButton3" runat="server" OnClick="LinkClicked" Text="Get Your Free 3" /></span></li>
</ul>
</li>
</ul>
</li>
<li><span>Home & Garden</span><ul>
<li><span>Client 4</span><ul>
<li><span><asp:LinkButton ID="LinkButton6" runat="server" OnClick="LinkClicked" Text="Get your Free 6" /></span></li>
</ul>
</li>
</ul>
</li>
</ul>
Теперь я беру строку и добавляю ее на панель, которая является частью представления в элементе управления с несколькими окнами:
Panel1.Controls.Add(new LiteralControl(mstring));
Я пытался поиграть с Page.ParseControl, но я не могу заставить его работать прямо на панели, кнопки ссылки не отображаются, даже если в источнике есть текст. Любые предложения приветствуются.
Заранее спасибо
Теперь я попробовал это:
Control myctrl = Page.ParseControl(mstring);
Panel1.Controls.Add(myctrl);
и я получаю это как один из элементов управления:
a id="dnn_ctr954_ViewPromotions_LinkButton2" href="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("dnn$ctr954$ViewPromotions$LinkButton2", "", true, "", "", false, true))">Get your Free 2</a>
Это не работает так, как ожидалось, dotnetnuke делает какие-то сумасшедшие вещи, используя контроль синтаксического анализа. похоже, что мое событие LinkClicked пропущено.