2010-03-24 52 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

謝謝,但我發現了更簡單的解決方案 - 可以直接將