Скрипт запуска Sharepoint Custom WebPart - PullRequest
0 голосов
/ 27 июля 2010

Хорошо, у меня возникла уникальная проблема, которую я пытался решить в течение двух дней.

У меня есть элемент управления System.Web.UI.WebControls.WebParts.WebPart. Я создаю пользовательское представление Sharepoint.с.Почти все, что я хочу сделать, работает, кроме одной маленькой проблемы.Мне нужно использовать Javascript для форматирования полей даты и валюты.Клиент хочет, чтобы поля DateTime были мм / дд / гггг, а валюта имела $ и запятые, где это уместно.

Это достаточно просто в javascript на обычной странице aspx.Я только что написал функции и при загрузке страницы

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);  
}

Моя проблема в том, что на OnLoad WebPart не существует сетка, которую я хочу обновить ... поэтому я должен добавить код вOnPreRender.

Ну, WebPArt загружается, а Javascript не запускается ... поэтому я нажимаю кнопку "Обновить", и она срабатывает.Может ли кто-нибудь помочь мне получить код, работающий с начальной загрузкой WebPart?Кто-нибудь смог заставить серверный скрипт работать таким образом в SharePoint?

Спасибо, Майк V

1 Ответ

4 голосов
/ 27 июля 2010

Для этого вы можете воспользоваться _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>";   

Редактировать Чтобы проверить, поместите следующий код в веб-часть редактора контента на своей странице:

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