在 GridView 的 SelectedIndexChanged 事件上使用客户端脚本

发布于 2024-12-23 23:23:49 字数 1496 浏览 2 评论 0原文

这是背后的代码:

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 错误。我不知道为什么在这种情况下无法执行客户端脚本。有人可以帮我吗?谢谢。

Here is the code behind:

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>");
}

Here is the structure of my aspx page

<%@ 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>

My intention is to create Lightbox/Graybox kinda effect where we have the DetailsView control placed in the central box of screen while the background grayed out. I am trying the css approach here and using js code should be very minimal.

But for some reason, I keep getting document.getElementByID("div_detailsView") is null error. I don't know why I can't execute the client script in this case. Could anyone give me a hand please? Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

能怎样 2024-12-30 23:23:49

有可能在页面完全加载之前调用脚本。尝试改用RegisterStartupScript

It is possible that script is invoked before page is fully loaded. Try using RegisterStartupScript instead.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文