Внешний файл Javascript в веб-части Sharepoint - PullRequest
1 голос
/ 09 марта 2011

Я создаю веб-часть sharepoint, в которой я хочу вызвать внешний файл javascript.Я создал файл .js по следующему адресу:

C: \ Program Files \ Common Files \ Microsoft Shared \ Расширения веб-сервера \ 14 \ TEMPLATE \ LAYOUTS \ CustomJScripts

Его функция предоставления не найденакогда функция вызывается.Неправильно ли расположение файла JavaScript?Ниже приведен код:

protected override void CreateChildControls()
{
    Page.ClientScript.RegisterStartupScript(
        this.GetType(), 
        this.ID, 
        "_spOriginalFormAction = document.forms[0].action;", 
        true);


       ClientScriptManager cs = Page.ClientScript;
        if (!cs.IsClientScriptIncludeRegistered("OnMouseOverScript"))
        cs.RegisterClientScriptInclude(
            this.GetType(), 
            "OnMouseOverScript", 
            ResolveUrl("/_layouts/CustomJScripts/MyJS.js"));
}

private void GetData(string strSchCode)
{

     Table t = new Table();

     TableRow tr = new TableRow();
     TableCell tc = new TableCell();

     tc.Attributes.Add("onmouseover", "return ShowInfo('AA');");
     tr.Controls.Add(tc);
     t.Controls.Add(tr);
     this.Controls.Add(t);
}

Ответы [ 3 ]

0 голосов
/ 09 марта 2011

Может быть, есть проблема с одинарными кавычками? например используйте двойные кавычки вместо одинарных:

tc.Attributes.Add("onmouseover", "return ShowInfo(\"AA\");");
0 голосов
/ 09 марта 2011

Я бы использовал метод ScriptLink.Register и затем переместил бы ваш файл в папку 14 \ TEMPLATE \ LAYOUTS \ 1033 \ CustomJScripts.

ScriptLink инкапсулирует вызовы ClientScriptManager вместе с дополнительными функциями. Параметр name является относительным путем, поэтому файл javascript должен находиться в каталоге 14 \ TEMPLATE \ LAYOUTS \ LCID (где LCID - номер вашего языка).

Ваш код будет выглядеть примерно так:

protected override void CreateChildControls()
{
    Page.ClientScript.RegisterStartupScript(
        this.GetType(), 
        this.ID, 
        "_spOriginalFormAction = document.forms[0].action;", 
        true);

    ScriptLink.Register(this.Page, "CustomJScripts/MyJS.js", true);
}
0 голосов
/ 09 марта 2011

Вы должны добавить этот javascript к своей веб-части.В моей веб-части я использую этот метод:

    protected override void OnPreRender(EventArgs e)
    {
        Page.ClientScript.RegisterStartupScript(GetType(), "MyScript",
            "<SCRIPT language='javascript' src='~/_layouts/CustomJScripts/MyJS.js'></SCRIPT>", false);
        base.OnPreRender(e);
    }
...