目前正在使用连接的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都会重量激情。

许可以下: CC-BY-SA归因
scroll top