2010-03-24 3 views
2

Description du problème

Est-il possible d'enregistrer (inclure) javascript dans les RenderingTemplate? (RenderingTemplates sont utilisés pour rendre les formulaires de liste ou des champs) En utilisantinscrire/javascript Inclure dans les RenderingTemplate

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

il ne pouvait pas être fait - il n'a pas inclure un script à la zone HEAD, mais ...:

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

Quelque chose ne va pas avec mon code? Tout le script EST dans le dossier Layouts et j'ai vérifié avec Reflector qu'il utilise le dossier Layouts si Localizable = 'False'.

Je ne veux pas que ce script soit chargé avec chaque page, mais seulement pour les formulaires.

Des idées sur la façon dont cela pourrait être réalisé?

Mon idée qui ne fonctionne pas ...

Ma première idée était de ajouter scénario programme avec <% this.Page.ClientScript.RegisterClientScriptInclude("spffa", "/_layouts/SPFormFieldAssistant.js") %>, mais il ne fonctionne pas, comme cette évaluation de code se produit dans la méthode de rendu et je l'ai lu quelque part où vous ne pouvez pas enregistrer des scripts clients dans la méthode Render, mais cela se fait généralement dans la méthode PreRender. Pitié

Ma deuxième idée qui ne fonctionne toujours pas

je pensais créer RegisterClientScript et il coutume UserControl nommée dans la méthode de PreRender je voudrais ajouter surchargée scripts j'ai besoin avec le gestionnaire de script client (this.Page.ClientScript ...) mais, comme avec SharePoint: ScriptLink, mon contrôle est également rendu sous forme de texte! my control as text http://img693.imageshack.us/img693/3738/ss20100324115826.png

Comment puis-je surmonter cela et où est la prise?

+0

runat = où? devrait être spécifié si vous avez besoin de contrôles côté serveur – naivists

+0

C'est vrai, merci. Mon erreur :( –

Répondre

2

Il se avère que vous pouvez directement ajouter des balises à <script> CALIBRE!

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

Merci pour les notes cependant.

1

Autrefois, j'avais une exigence similaire. Pour lequel j'ai inclus le script Enregistrer dans la méthode CreateChildControls de la classe Contrôle de champ.

+0

Merci, mais j'ai trouvé beaucoup plus simple solution - il est possible d'ajouter directement des balises