0

コンシューマーWebパーツのPage_Loadでいくつかの動的コントロールを作成する必要があります。プロバイダーのWebパーツで、ハッキングを行って取得したので、ビューステートがPage_Initに読み込まれる前にコントロール値を取得できました。

つまり、基本的に私が望んでいるのは、WebパーツがPage_Loadの前に通信できるようにすることです。

[ConnectionConsumer("FormRID Consumer","FormRIDConsumer")]
public void InitializeProvider(MyControl.IFormRID provider)
{
    theProvider = provider;
    FormRID = theProvider.FormRID;
}

そのメソッドは、Page_Loadが完了するまで呼び出されません。これは私にとって大きな問題です。なぜなら、私のコンシューマーのPage_Loadは、設定されているFormRIDと正確さに依存しているからです。viewstateを使用して動的コントロールを作成する必要があるため、Page_LoadコードをPage_LoadCompleteに移動できません(viewstateはPage_Load後に復元されません)

それで、Page_Loadの前に通信できるように使用できる回避策がいくつかあります。

4

3 に答える 3

1

WebパーツゾーンのInitイベントをサブスクライブして、InitializeProvider()をそこに配置してみましたか?ユーザーコントロールとWebフォームのOnLoadまたはOnInitイベントの前に発生すると思います。

于 2009-10-22T16:40:59.527 に答える
1

onLoadはWebPart接続が実行される前に発生するため、LoadではなくOnPreRenderイベントで使用する必要があります。

これは、OnLoadイベントとOnPreRenderイベントを使用して期待できることの一例ですhttp://blog.mastykarz.nl/web-part-requires-clicking-twice-apply-ok-button-apply-changes/

于 2012-01-03T20:15:10.000 に答える
0

結局、自分のWebパーツ通信を作成する必要がありました。

最終的にはASP.Netよりもはるかにクリーンになり、通信はWebパーツ内のOnInitで発生する可能性があります。

于 2009-11-30T23:10:58.420 に答える