好的,我遇到了一个两天来一直试图解决的独特问题。
我有 System.Web.UI.WebControls.WebParts.WebPart 控件,我正在使用它构建自定义 Sharepoint View。除了一个小问题,我想做的几乎所有事情都在工作。我需要使用 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 加载上工作的代码吗?有没有人能够让服务器端脚本在 SharePoint 中以这种方式工作?
谢谢,迈克五世