0
好吧,我得到了一個我一直試圖解決的獨特問題兩天。Sharepoint自定義WebPart啓動腳本
我有System.Web.UI.WebControls.WebParts.WebPart控件我正在構建一個自定義Sharepoint視圖。我想要做的幾乎所有事情都在工作,除了一個小問題。我需要使用Javascript來格式化日期和貨幣字段。客戶希望日期時間字段爲mm/dd/yyyy,貨幣在適當的地方有$和逗號。
在一個普通的aspx頁面上,這在javascript中很容易。我剛寫的功能,在頁面加載
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);
}
我的問題上,我想更新電網不存在的WebPart的onload ......所以我必須將代碼添加到的OnPreRender。
好吧,WebPArt加載和JavaScript不會觸發...所以我點擊刷新,它會觸發。任何人都可以幫助我獲得有關初始WebPart Load的代碼嗎?有沒有人能夠獲得服務器端腳本在SharePoint中以這種方式工作?
謝謝, 邁克V
套件, 感謝您的輸入 - 我試過了 - 但似乎不工作......但這可能是因爲我在錯誤的時間/地點添加它。我會將此代碼添加到WebPart OnLoad或PreRender。我正在使用ScriptManager來註冊這個腳本 - 但沒有任何反應。 – MDV2000 2010-07-28 19:30:32
OnLoad或PreRender應該都可以(因爲它只是被添加到控件集合中)。但是,腳本最終會在頁面上出現的位置很重要。 _spBodyOnLoadFunctionNames在/_layouts/1033/init.js中,所以你的調用需要在加載init.js之後才能完成。我添加了一些代碼,您可以在網頁上的內容編輯器中嘗試。試試看看你是否得到了Hello World警報。 – 2010-07-29 20:55:45
這篇Technet文章可能會給你一些見解。 http://social.technet.microsoft.com/wiki/contents/articles/15790.all-about-sharepoint-javascript-function-spbodyonloadfunctionnames.aspx您可以使用setTimeout在腳本的開頭添加一個小延遲。 http://sharepointsolutions.blogspot.com/2007/07/adding-javascript-to-content-editor-web.html – MonkeyWrench 2013-05-03 23:47:15