質問

現在接続されている3つのWeb部品を使用しています(Bに接続されているBに接続されているWebPart Aに接続されています)。問題は、BとCの間の接続に表示されるWebPart Bはプロバイダとコンシューマで、いくつかの変数を持つドロップボックスだけが含まれています。このDropboxのSelectedItemは提供された値です。これは、WebPart Bで使用しているコードのConnectionProviderです。

[ConnectionProvider("DropboxValue", "dbv")]
public IDropBoxValue provider()
{
     return this;
}
.

これは、WebPart Cで使用しているConnectionConsumerです。

[ConnectionConsumer("DropboxValue", "dbv")]
public void consumer(IDropBoxValue providerInterface)
{
     _provider = providerInterface;
}
.

ページの最初の負荷でDropboxValueが自動的に選択され、WebPart Cはこの変数を使用してデータを含むSPGridViewを作成します。 Dropbox WebPart Cから新しい項目を選択してこの変数を変更した場合は、それに応答しません。実際、Debugでプロジェクトを実行した場合、WebPart Cから何も呼び出されません。

それでは、WebPart CがWebPart Bの変更に応答しないのはなぜですか?

追加編集 WebPart BでSelectedValueを変更するたびに、テキストが「プロバイダWebパーツが接続されていない」に変更されます。このエラーは私によって作成され、のときにスローされます

if (_Provider == null)
.

_providerはWebPart Aプロバイダのインタフェースです。

役に立ちましたか?

解決

私のケースのエラーはCreateChildControlsとonPrerender関数を使用してレイアインします。onprerender関数で呼び出されたときにCreateChildControlsにプロバイダを呼び出しました。

CreateChildControlsで別のWebPartを呼び出すと、そのWebPartのCreateChildControlが開始されていない可能性があります。OnPrederenderが呼び出されたら、すべてのWebPartのすべてのCreateChildControl関数が呼び出されました。そして、OnPrederenderが現在のページですべてのWebPartsと呼ばれる時点で、エクスポートされます。

ライセンス: CC-BY-SA帰属
所属していません sharepoint.stackexchange
scroll top