2010-03-24 53 views
2

问题描述

包括JavaScript是有可能的RenderingTemplate 登记(包括)的JavaScript? (RenderingTemplates用来渲染列表形式或字段) 使用注册/的RenderingTemplate内

<SharePoint:RenderingTemplate ID="NewRelatedListItem" runat="server"> 
    <Template> 
    <span id="part1"> 
     <SharePoint:ScriptLink Name="SPFormFieldAssistant.js" Localizable="false" /> 
     ... 
    </span> 
    ... 
    </Template> 
</SharePoint:RenderingTemplate> 

它不能做 - 它没有包括头部区域的脚本,但...:

Source http://img62.imageshack.us/img62/9826/ss20100324092808.png

我的代码有问题吗?尽管脚本IS位于Layouts文件夹,并且我使用Reflector检查它是否使用Layouts文件夹(如果Localizable ='False')。

我不希望这个脚本被加载到每一个页面,但只能用于表单。

关于如何实现这一点的任何想法?

我的想法是不工作...

我的第一个想法是添加脚本编程<% this.Page.ClientScript.RegisterClientScriptInclude("spffa", "/_layouts/SPFormFieldAssistant.js") %>,但它不工作,因为该代码评价是发生在Render方法和我读在哪里你不能在Render方法中注册客户端脚本,但通常在PreRender方法中完成。可惜

我的第二个想法,仍然没有工作

我以为我会创建被覆盖的prerender方法中的自定义用户控件命名RegisterClientScript和那里,我可以添加脚本,我需要与客户端脚本管理器(this.Page.ClientScript ...),但与SharePoint:ScriptLink一样,我的控件也以文本形式呈现! my control as text http://img693.imageshack.us/img693/3738/ss20100324115826.png

我该如何克服这一点,以及抓住哪里?

+0

runat = where?应该指定,如果你需要服务器端控件 – naivists 2010-03-24 15:53:36

+0

这是真的,谢谢。我的错误:( – 2010-03-25 11:07:18

回答

2

事实证明,您可以直接将<script>标记添加到模板!

<script src="/_layouts/SPFormFieldAssistant.js" type="text/javascript"></script> 

但是,谢谢你的注意事项。

1

有时候,我有一个类似的要求。为此,我在Field Control类的CreateChildControls方法中包含脚本Register。

+0

谢谢,但我发现了更简单的解决方案 - 可以直接将