Bon, j'ai eu un problème unique que j'ai essayé de résoudre pendant deux jours.Script de démarrage WebPart personnalisé Sharepoint
J'ai le contrôle System.Web.UI.WebControls.WebParts.WebPart Je construis une vue Sharepoint personnalisée avec. Presque tout ce que je veux faire est de travailler sauf un petit problème. J'ai besoin d'utiliser Javascript pour mettre en forme les champs Date et Devise. Le client souhaite que les champs DateTime soient mm/jj/aaaa et que la devise ait $ et des virgules, le cas échéant.
Ceci est assez facile en javascript sur une page aspx régulière. Je viens d'écrire les fonctions et à la page charge
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GridFieldDAO dao = new GridFieldDAO();
myGrid.DataSource = dao.getItems();
myGrid.DataBind();
}
GetBuildFormattingScript();
}
private void GetBuildFormattingScript()
{
string script = "<script type=\"text/javascript\">";
script += " FormatByRows(\"" + myGrid.ClientID + "\",2);";
script += " FormatByRowsDate(\"" + myGrid.ClientID + "\",1);";
script += "</script>";
if(!ClientScript.IsClientScriptBlockRegistered("DoFormatting"))
ClientScript.RegisterStartupScript(typeof(string), "DoFormatting", script);
string script2 = " <script type=\"text/javascript\">"+
"var prm = Sys.WebForms.PageRequestManager.getInstance(); "+
"prm.add_beginRequest(BeginRequestHandler); "+
"prm.add_endRequest(EndRequestHandler); "+
"function BeginRequestHandler(sender, args) "+
"{ }"+
"function EndRequestHandler(sender, args) "+
"{ FormatByRows(\"" + myGrid.ClientID + "\",2); "+
" FormatByRowsDate(\""+myGrid.ClientID+"\",1);}</script> ";
if (!ClientScript.IsClientScriptBlockRegistered("DoUpdateFormatting"))
ClientScript.RegisterStartupScript(typeof(string), "DoUpdateFormatting", script2);
}
Ma question en ce que la OnLoad du réseau que je webpart suis désireux de mise à jour n'existe pas ... donc je dois ajouter du code à OnPreRender.
Eh bien, le WebPArt se charge et le Javascript ne se déclenche pas ... donc je clique sur refresh et il se déclenche. Quelqu'un peut-il m'aider à faire fonctionner le code sur la charge WebPart inital? Quelqu'un at-il pu obtenir un script côté serveur pour fonctionner de cette manière dans SharePoint?
Merci, Mike V
Kit, Merci pour l'entrée - j'ai essayé est - mais semble ne pas fonctionner ... mais c'est peut-être parce que je l'ajoute au mauvais moment/endroit. Est-ce que j'ajouterais ce code à WebPart OnLoad ou PreRender. J'utilise le ScriptManager pour reger ce script - mais rien ne se passe. – MDV2000
OnLoad ou PreRender devraient tous deux être OK (puisqu'il vient juste d'être ajouté à la collection de contrôle). Cependant, il importera où le script finit sur la page. _spBodyOnLoadFunctionNames se trouve dans /_layouts/1033/init.js, donc votre appel devra venir après le chargement de init.js. J'ai ajouté du code que vous pouvez essayer dans un éditeur de contenu sur votre page. Essayez-le et voyez si vous recevez une alerte Hello World. –
Cet article de Technet pourrait vous donner un aperçu. http://social.technet.microsoft.com/wiki/contents/articles/15790.all-about-sharepoint-javascript-function-spbodyonloadfunctionnames.aspx Vous pouvez simplement ajouter un petit délai au début de votre script avec setTimeout. http://sharepointsolutions.blogspot.com/2007/07/adding-javascript-to-content-editor-web.html – MonkeyWrench