我必须通过我的一个方法运行以下javascript。但它没有运行 代码有什么问题。
private void fillGrid1()
{
GridView1.DataSource = myDocCenter.GetDsWaitingForMe(Session["UserID"].ToString());
HiddenField1.Value = { myDocCenter.GetDsWaitingForMe(Session["UserID"].ToString()).Tables[0].Rows.Count).ToString();
GridView1.DataBind();
String csname1 = "PopupScript1";
String csname2 = "ButtonClickScript1";
Type cstype = this.GetType();
// Get a ClientScriptManager reference from the Page class.
ClientScriptManager cs = Page.ClientScript;
// Check to see if the client script is already registered.
if (!cs.IsClientScriptBlockRegistered(cstype, csname2))
{
StringBuilder cstext2 = new StringBuilder();
cstext2.Append("<script type=\"text/javascript\"> ");
// You can add JavaScript by using "cstext2.Append()".
cstext2.Append("var count = document.getElementById('ctl00_ContentPlaceHolder1_HiddenField2');");
cstext2.Append("var count = '100';");
cstext2.Append("document.getElementById('sp2').innerHTML = count;");
cstext2.Append("script>");
cs.RegisterClientScriptBlock(cstype, csname2, cstext2.ToString(), false);
}
}
答案 0 :(得分:1)
您的脚本代码未正确关闭。
更改
cstext2.Append("script>");
到
cstext2.Append("</script>");
答案 1 :(得分:0)
除了adamantium所说的,你的JS看起来有点奇怪。你似乎声明并设置了两次count变量 - 你的意思是这样做。
接下来,最好的办法是,渲染页面然后查看源代码。你的JS被渲染到页面?试着在那里贴一个警报......它在开火吗?
答案 2 :(得分:0)
> cstext2.Append("var count =
> document.getElementById('ctl00_ContentPlaceHolder1_HiddenField2');");
我会在这里使用ClientID属性。 HiddenField2.ClientID
答案 3 :(得分:0)
RegisterClientScriptBlock在<form>
标记打开后发出脚本。浏览器在打开标签之后执行此脚本,但此时尚未处理引用的元素 - 浏览器无法找到它们。
RegisterStartupScript方法在<form>
标记结束之前发出脚本。几乎所有的页面元素都由浏览器在这个地方处理,getElementById可以找到一些东西。
有关详细信息,请参阅http://jakub-linhart.blogspot.com/2012/03/script-registration-labyrinth-in-aspnet.html。