0

私はこれに夢中になり始めています。これをエレガントな方法で機能させることができないように「思われる」ので、できるはずだと確信しています。

ページの右側で、発生するイベントを持つカスタム サーバー コントロールを動的に作成します。このビットがテストで機能することが証明されています。

ページの左側に Treeview があり、これはポストバックではないと仮定してページの読み込み時に自動入力されます。ツリーのブランチの 1 つをクリックするとポスト バックされ、イベントが発生すると、クリックしたブランチに関連する情報を保持する新しいカスタム サーバー コントロールが右側に表示されます。右側のパネルには常に正しいコントロールが表示されますが、新しいブランチ ID は page_load イベントの後 (treeview イベントが発生したとき) にしか分からないため、イベントをクリックしてもイベントは発生しません。と思い登録。

私はResponse.Redirectの使用を検討しましたが、ツリービューのビューステートを失ったため、Javascriptポストバックを強制することを検討し始めましたが、それほど遠くはありません.

これが珍しい問題だとは本当に信じられないので、エレガントな解決策があることを願っています。私が完全に間違った方法で行っている場合は、これを機能させることができれば、すべてのロジックを喜んで変更します!!

大変感謝します!!

マット

*更新* *

まだこれを閉じることはできないので、下に貼り付けます

それを入力すると、Javascript ルートと、.NET がどこに何を持っている必要があるかについて考えさせられたようです。少し読んで、私はこれを思いつきました。

PostBackOptions pbo = new PostBackOptions(pnlEvents); pbo.ActionUrl = Request.Url.AbsoluteUri; pbo.PerformValidation = false; string postback = ClientScript.GetPostBackEventReference(pbo); ClientScript.RegisterStartupScript(typeof(Page), "AutoPostBackScript", postback, true);

これにより、情報を取得するイベントが発生した後にこれを実行すると、別のポストバックが発生し、ビューステートまたは別のコントロールのビューステートに値を保存している限り、Init または Load のサーバー コントロールをロードできます。

4

1 に答える 1

0

イベントは Page_Init または Page_Load に登録できます。それでもわからない場合は、MSDN の ASP.NET ページ ライフ サイクルの概要を確認してください。

更新: ポストバック メカニズムをまったく使用せずに、単純にパラメーターを URL で送信し、Page_Load で取得できます。

于 2012-07-30T19:44:31.340 に答える