Использование клиентского скрипта для события SelectedIndexChanged в GridView - PullRequest
1 голос
/ 04 января 2012

Вот код:

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.Я не знаю, почему я не могу выполнить клиентский скрипт в этом случае.Может ли кто-нибудь помочь мне, пожалуйста?Благодаря.

1 Ответ

2 голосов
/ 04 января 2012

Возможно, что скрипт вызывается до полной загрузки страницы . Попробуйте вместо этого RegisterStartupScript .

...