1

複数のユーザーコントロールで構成されるasp.netページがあり、その多くはvisible属性がに設定されていますfalse。ラジオボタンを選択すると、コードビハインドでvisible属性をに設定することにより、ユーザーコントロールの1つが表示されます。trueこの場合、JavaScript関数を実行する必要があります。スクリプトは、ページのメソッドを使用ScriptManager.RegisterStartUpScriptして登録されています。Page_Load

どうすればこれを機能させることができますか?

私たちが試したこと:

  • スクリプトをユーザーコントロールに登録します(コードビハインドとマークアップの両方)
  • で利用可能な他の方法のいくつかを試してみてくださいScriptManager
  • jQueryの使用$(document).ready()

ただし、すべての場合において、スクリプトはページがロード/リロードされたときにのみ実行されます。動作しているように見える唯一のハックpageLoad()は、PostBackのたびにこの関数が呼び出されるため、関数内で関数を呼び出すことです。

4

2 に答える 2

0

updatePanel内にユーザーコントロールを含め、updatePanelロードイベント内にScriptManager.RegisterStartUpScriptを追加することをお勧めします。

<asp:UpdatePanel runat="server" ID="UpdatePanel1" 
OnLoad="UpdatePanel1_Load">

c#

protected void UpdatePanel1_Load(object sender, EventArgs e)
{
  //your code to fire the javascript
}
于 2012-08-20T16:29:38.260 に答える
0

サーバー側を試すことができます:ClientScriptManager.RegisterClientScriptBlock()クライアント側で:setTimeout()

例えば:

protected void Page_Load(object sender, EventArgs e)
{
    Page page = (Page)HttpContext.Current.CurrentHandler;
    string script = "<script type=\"text/javascript\">setTimeout(function(){alert("Hello World")},3000);</script>";

    if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("alert"))
    {
            page.ClientScript.RegisterClientScriptBlock(typeof(PageFunctions), "alert", script);
    }
}

これにより、page_load にスクリプト ブロックが登録され、3 秒後にアラートが表示されます。setTimeout @ Window setTimeout() メソッドの詳細を参照してください。

于 2012-08-20T19:43:21.690 に答える