我很难理解一些web部件通信代码,以及如何根据需要使其工作。我对网络部件相当陌生,所以我觉得我已经把它复杂化了。
我有过
public interface IFormTypeRID
{
int FormTypeRID { get; }
}对于这个页面,我在左边有一个ListControl,它是一个web部件。当您选择具有此列表控件的内容时,它会回发并将此接口发送到MainForm web部件,因此我在接收端具有以下内容:
private IFormTypeRID theProvider;
[ConnectionConsumer("FormTypeRID Consumer", "FormTypeRIDConsumer")]
public void InitializeProvider(IFormTypeRID provider)
{
theProvider = provider;
FormTypeRID = theProvider.FormTypeRID;
}现在,我的问题是InitializeProvider发生在Page_Load之后。
这意味着当从MainForm when部件内部回发时,FormTypeRID永远不会被发送进来。嗯,这很容易,只需将其存储在视图状态或隐藏字段中即可。
但问题就在这里。
如果FormTypeRID是在PageLoad之后,我该如何处理设置它。目前,我只有一个setter方法来调用适当的函数。但是,这很麻烦,因为setter中的代码必须执行两次。这是因为必须在FormTypeRID中设置Page_Load,因为不知道我们的提供者是否会给我们FormTypeRID (因为我们不知道回发是因为另一个we部分,还是因为FormMain)。
我知道我解释得很糟糕。但基本上,您如何从一个webpart(提供者)或另一个webpart(消费者)判断是否发生了回发(因此也是一个page_load)?
发布于 2009-11-30 23:06:58
所有这一切的答案是不平凡的。
最后,我编写了我自己的"webpart通信“,它实际上比ASP.NET的要干净得多,而且它在Init和Load等过程中都能工作。
https://stackoverflow.com/questions/1495314
复制相似问题