2012-01-04 2 views
1

にクライアントスクリプトを使用すると、ここでの背後にあるコードである:ここではGridViewのSelectedIndexChangedイベント

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ページの構造は、私の意図はちょっとどこ影響ライトボックス/ Grayboxを作成することです

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

ですバックグラウンドがグレー表示されている間、DetailsViewコントロールを画面の中央ボックスに配置します。私はここでCSSのアプローチを試しているとjsコードを使用して非常に最小限に抑える必要があります。

何らかの理由で、私はdocument.getElementByID("div_detailsView") is nullエラーが発生し続ける。私はなぜこの場合にクライアントスクリプトを実行できないのか分かりません。誰も私に手を差し伸べることができますか?ありがとう。

+1

クライアントコードは、div_detailsViewがレンダリングされる前に実行されます。 – adatapost

+0

htmlの準備ができたらクライアントスクリプトを実行できますか? – woodykiddy

+0

だと思います。 window.onload – adatapost

答えて

2

ページが完全に読み込まれる前に、スクリプトが呼び出される可能性があります。代わりにRegisterStartupScriptを使用してみてください。

+0

Cool。 'RegisterStartupScript'は問題を解決します。 :) – woodykiddy

+0

これは以前に知っていたはずですhttp://msdn.microsoft.com/en-us/library/asz8zsxy.aspx – woodykiddy

関連する問題