消费者Web部件没有响应提供商Web部件的变化
-
10-12-2019 - |
题
目前正在使用连接的3个网站(连接到B,B连接到C的WebPart A)。问题奠定了B和C之间的连接,WebPart B是提供商和消费者,并且只包含带有一些变量的Dropbox。来自此Dropbox的SelectedItem是提供的值。这是代码中使用的ConnectionProvider在WebPart B中使用。
[ConnectionProvider("DropboxValue", "dbv")]
public IDropBoxValue provider()
{
return this;
}
.
这是我在webpart c中使用的连接文件。
[ConnectionConsumer("DropboxValue", "dbv")]
public void consumer(IDropBoxValue providerInterface)
{
_provider = providerInterface;
}
.
在页面的第一个负载上,自动选择DropboxValue,WebPart C使用此变量以创建带有数据的SpGridView。现在,如果我通过从Dropbox WebPart C中选择一个新项目来更改此变量,则不会响应它。事实上,如果我在调试中运行项目,那么WebPart C.
为什么WebPart C没有响应WebPart B中的更改?
额外编辑
每当我更改WebPart B中的SeptaentValue时,它会将其更改为“未连接提供商Web部件”的文本。此错误由我创建,并在时抛出
.
if (_Provider == null)
_provider是webpart提供商的接口。
解决方案
我的情况下的错误奠定了使用CreateChildControls和OnPrerender函数。我在onpterender函数中调用了CreateChildControls中的提供商。
如果您在CreateChildControl中调用不同的WebPart,则可能未启动该WebPart的CreateChildControls。当OnPrerender称为所有WebParts的所有CreateChildControl函数时,已被调用。因此,当时onpreender在当前页面上称为所有WebParts都会重量激情。