Описание проблемы
Можно ли зарегистрировать (включить) javascript в RenderingTemplate ? (RenderingTemplates используются для визуализации списков форм или полей)
Используя
<SharePoint:RenderingTemplate ID="NewRelatedListItem" runat="server">
<Template>
<span id="part1">
<SharePoint:ScriptLink Name="SPFormFieldAssistant.js" Localizable="false" />
...
</span>
...
</Template>
</SharePoint:RenderingTemplate>
это не может быть сделано - это не включает скрипт в области HEAD, но ...:
Источник http://img62.imageshack.us/img62/9826/ss20100324092808.png
Что-то не так с моим кодом? Сценарий Althought находится в папке Layouts, и я с помощью Reflector проверил, использует ли он папку Layouts, если Localizable = 'False'.
Я не хочу, чтобы этот скрипт загружался с каждой страницы, а только для форм.
Есть идеи о том, как этого можно достичь?
Моя идея, что не работает ...
Моей первой идеей было добавить script программно с <% this.Page.ClientScript.RegisterClientScriptInclude("spffa", "/_layouts/SPFormFieldAssistant.js") %>
, но это не работает, так как эта оценка кода происходит в методе Render, и я читал где-то, что вы не можете зарегистрировать клиентские скрипты в методе Render, но обычно это делается в методе PreRender. Жалость
Моя вторая идея, которая все еще не работает
Я думал, что создам пользовательский UserControl с именем RegisterClientScript, и там в переопределенном методе PreRender я бы добавил нужные мне скрипты с помощью менеджера клиентских скриптов (this.Page.ClientScript ...), но, как и в SharePoint: ScriptLink, мой элемент управления также отображается как текст!
мой контроль как текст http://img693.imageshack.us/img693/3738/ss20100324115826.png
Как мне преодолеть это и где подвох?