我在aspx页面中的表单id="后面有这个;形式1";runat=";服务器";标签:(不得不剥离>和<(
<script type="text/javascript">
function openLocationForm(locationId)
{
window.open('FlagLocationViewForm.aspx?id=' + locationId), '_blank');
}
</script>
FlagLocationViewForm.aspx页面确实存在,并且需要向其传递一个参数。如果我只是使用Response.RRedirect("FlagLocationView Form.aspx"(加载该页面;它加载,但不在新标签中。
我在与上面提到的脚本的.aspx页面相关联的.cs文件中有这个。
protected void GridViewCustomerList_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
{
GridViewSelectEventArgs args = (GridViewSelectEventArgs)e;
GridViewRow row = GridViewCustomerList.Rows[args.NewSelectedIndex];
int customerId = Convert.ToInt32(row.Cells[6].Text);
string scriptToRun = "openLocationForm('" + customerId.ToString() + "');";
Page.ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), scriptToRun, true);
}
该页面导致GridViewCustomerList_SelectedIndexChanging被激发-一切正常。但是RegisterStartupScript不执行任何操作。如果我用以下内容代替Page.ClientScript.RegisterStartupScript行:
Page.ClientScript.RegisterStartupScript(this.GetType((,Guid.NewGuid((.ToString((,"alert("你好"(&";,true(;
我收到显示"你好"的警报。
有人能告诉我我做错了什么吗?
我猜,如果您检查浏览器的开发工具控制台,您会发现一条关于openLocationForm
未定义的消息。
我认为这里可能发生的是openLocationForm
函数还不存在。如果您检查源代码,您很可能会看到启动脚本出现在函数定义之前。
将你的函数定义移得更高(例如,到头部(,它应该会起作用。