0

私はこのようなことをしたい:

Panel divPanel = new Panel();
divPanel.ID = "divPanel";
this.Page.Controls.Add(divPanel);


string script = "function alertID(){alert("the id is: "+divPanel.ClientID+");}";
this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "scripttests", script);

しかし、このコードを page_load に入れると、ctl00_ContentMain_divPanel である完全な ID を取得できず、divPanel を取得するだけです。

使用すべき別のイベントはありますか? どうすればこれを機能させることができますか?

4

2 に答える 2

0

あなたの例では、ページ コントロール コレクションに直接追加しています。これは、クライアント ID が divPanel であることを意味します。期待しているクライアント ID が間違っている可能性があります。

于 2010-06-15T20:26:18.700 に答える
0

PreRender は問題ありませんが、Page_Load でも機能するはずです。

http://msdn.microsoft.com/en-us/library/system.web.ui.control.clientid(VS.71).aspx

スクリプト レンダリング コードも page_load で実行されていますか? 上記の例では一緒になっていますが、おそらくコピーして貼り付けただけですか?

このコードがカスタム コントロール内にある場合は、ClientID が期待どおりに機能するように、INamingContainer インターフェイスをコントロール宣言に追加する必要もあります。

http://msdn.microsoft.com/en-us/library/system.web.ui.inamingcontainer.aspx

さらに、これがカスタム コントロールである場合は、含まれているページではなく、コントロール自体の Controls コレクションに追加する必要があります。すなわち: this.Page.Controls.Add() の代わりに this.Controls.Add()

于 2010-06-15T20:18:39.930 に答える