2012-01-04 1 views
1

Вот код позади:Использование клиентского сценария на событие SelectedIndexChanged GridView в

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> 

Мое намерение состоит в том, чтобы создать Лайтбокс/Graybox своего рода эффект, где мы иметь элемент управления DetailsView, размещенный в центральном поле экрана, в то время как фон неактивен. Я пытаюсь использовать css здесь, и использование js-кода должно быть очень минимальным.

Но по какой-то причине я продолжаю получать document.getElementByID("div_detailsView") is null ошибки. Я не знаю, почему я не могу выполнить клиентский скрипт в этом случае. Может ли кто-нибудь дать мне руку, пожалуйста? Благодарю.

+1

Клиентский код выполняется до отображения div_detailsView. – adatapost

+0

Могу ли я выполнить клиентский скрипт после того, как html готов? – woodykiddy

+0

думаю. window.onload – adatapost

ответ

2

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

+0

Прохладный. 'RegisterStartupScript' решает проблему. :) – woodykiddy

+0

Должен был знать это ранее http://msdn.microsoft.com/en-us/library/asz8zsxy.aspx – woodykiddy

 Смежные вопросы

  • Нет связанных вопросов^_^