gpt4 book ai didi

javascript - Sharepoint 自定义 Web 部件启动脚本

转载 作者:行者123 更新时间:2023-11-28 16:37:14 25 4
gpt4 key购买 nike

好的,我遇到了一个独特的问题,我这两天一直在尝试解决。

我有 System.Web.UI.WebControls.WebParts.WebPart 控件,我正在使用它构建自定义 Sharepoint View 。除了一个小问题之外,几乎我想做的所有事情都在进行。我需要使用 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 加载上运行?有没有人能够让服务器端脚本在 SharePoint 中以这种方式工作?

谢谢,迈克V

最佳答案

为此,您可以利用_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>";

编辑要进行测试,请将以下代码放入页面上的内容编辑器 Web 部件中:

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

关于javascript - Sharepoint 自定义 Web 部件启动脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3338590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com