这是背后的代码:
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
DetailsView1.Visible = true;
string csName = "showDetails";
StringBuilder sb = new StringBuilder();
sb.Append("document.getElementById('div_detailsView').style.display = 'block';");
sb.Append("document.getElementById('overlay').style.display = 'block';");
if (!ClientScript.IsClientScriptBlockRegistered(csName))
{
ClientScript.RegisterClientScriptBlock(this.GetType(), csName, sb.ToString(), true);
}
Response.Write(GridView1.SelectedIndex + "<br>");
}
这是我的aspx页面的结构
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Summary.aspx.cs" Inherits="Summary" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" Runat="Server"></asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server">
<div>
<!-- Grid View Control placed here -->
</div>
<div id="div_detailsView">
<!-- Details View Control placed here -->
</div>
<div id="overlay"></div>
</asp:Content>
我的目的是创建Lightbox / Graybox有点效果,我们将DetailsView控件放在屏幕的中央框中,同时背景变灰。我在这里尝试css方法,使用js代码应该是非常小的。
但出于某种原因,我不断收到document.getElementByID("div_detailsView") is null
错误。我不知道为什么在这种情况下我无法执行客户端脚本。请问有人帮我一把吗?感谢。
答案 0 :(得分:2)
在页面完全加载之前,可能会调用脚本。请尝试使用 RegisterStartupScript 。