首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.net失败RegisterClientScriptBlock

ASP.net失败RegisterClientScriptBlock
EN

Stack Overflow用户
提问于 2014-08-21 19:57:03
回答 1查看 257关注 0票数 0

当我试图在我的跟踪中注册这个脚本时,它说它没有注册,尽管我在这里感叹它的注册:

代码语言:javascript
复制
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "DrillThrough report " + (int) dr["ReportID"] + " script", vbs_script);

脚本文件名为DrillThrough6-0.Function.BT.SS2005.ReportID42193.vbs,可能会出错。另外,如果我使用开发人员工具运行Internet explorer (可能只是巧合,但它总是只在打开开发工具时发生),它就会注册得很好。并且按照它的设想运行,否则它根本不运行。

上下文代码:

代码语言:javascript
复制
SqlDataReader dr = PivotTableDB.GetReport(drillThroughReportID);
        Trace.Warn("Attempting to Read... ");
        if (dr.Read()) {
            Trace.Warn("Reading... ");
            Page.ClientScript.RegisterHiddenField("txt_DetailReportCubeName", (string) dr["CubeName"]);

            string path = (string) this.MapPath("~/DesktopModules/PivotTableNav/DrillThroughReportScripts/");
            string name = (string) dr["DisplayName_en"] + ".ReportID" + (int) dr["ReportID"] + ".vbs";
            string vbs_script = "";

            if (File.Exists(path + name)) {

                StreamReader sr = new StreamReader(path + name,System.Text.Encoding.GetEncoding("iso-8859-1"));
                vbs_script = sr.ReadToEnd();
                vbs_script = vbs_script.Replace("Spreadsheet1","document.Form1.Spreadsheet1");
                vbs_script = vbs_script.Replace("for=document.Form1.Spreadsheet1","for=Spreadsheet1");
                sr.Close();
            }

            if (vbs_script != null) {
                Trace.Warn("vbscript", vbs_script);
                Trace.Warn("vbscript-path", (path + name));
                Trace.Warn("vbscriptExist", "File exist: " + File.Exists(path + name) + " BlockRegistered already: " + Page.ClientScript.IsClientScriptBlockRegistered("DrillThrough report " + (int)dr["ReportID"] + " script"));
                if (! Page.ClientScript.IsClientScriptBlockRegistered("DrillThrough report " + (int) dr["ReportID"] + " script"))
                    Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "DrillThrough report " + (int) dr["ReportID"] + " script", vbs_script);
            }
            Trace.Warn("Was vbscript Registered: " + Page.ClientScript.IsClientScriptBlockRegistered("DrillThrough report " + (int)dr["ReportID"] + " script"));

            Title.Text = LanguageUtils.ChooseOnLanguage(dr["DisplayName_en"].ToString(), dr["DisplayName_fr"].ToString());

        }
        else { Trace.Warn("Did not read the report since no data no rows: "); }
        dr.Close();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-26 14:59:09

为了实现这个目标,我将RegisterClientScriptBlock改为了RegisterStartupScript。现在寄存器成功了,直接将isClientScriptBlockRegistered更改为IsStartupScriptRegistered。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25434869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档