簡體   English   中英

Sharepoint自定義WebPart啟動腳本

[英]Sharepoint Custom WebPart Startup Script

好的,我遇到了一個已經解決了兩天的獨特問題。

我有System.Web.UI.WebControls.WebParts.WebPart控件,正在使用它構建自定義的Sharepoint視圖。 除了一個小問題,我幾乎想做的所有事情都在工作。 我需要使用Javascript來格式化日期和貨幣字段。 客戶希望DateTime字段為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中以這種方式工作?

謝謝,邁克五世

為此,您可以利用_spBodyOnLoadFunctionNames

string script = "<script type=\"text/javascript\">";   
script += " function FormatDataGridRows() {";
script += "    FormatByRows(\"" + myGrid.ClientID + "\",2);";   
script += "    FormatByRowsDate(\"" + myGrid.ClientID + "\",1);";   
script += " }";
script += " _spBodyOnLoadFunctionNames.push('FormatDataGridRows');";
script += "</script>";   

編輯要測試,請將以下代碼放在頁面上的Content Editor Web部件中:

<script type="text/javascript">
function SayHello() {
   alert('hello world!');
}
_spBodyOnLoadFunctionNames.push("SayHello");
</script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM