【发布时间】:2010-12-02 11:48:29
【问题描述】:
我无法理解某些 Web 部件通信代码,以及如何根据需要使其工作。我对 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 webpart 内部发生回发时,FormTypeRID 永远不会发送进来。嗯,这很容易,只需将其存储在视图状态或隐藏字段中即可。
但是问题来了。
如果在 PageLoad 之后设置 FormTypeRID,我该如何操作。目前,我只有一个调用适当函数的 setter 方法。然而,这很麻烦,因为 setter 中的代码必须执行两次。这是因为 FormTypeRID 必须在 Page_Load 中设置,因为不知道我们的提供者是否会给我们 FormTypeRID(因为我们不知道回发是因为其他 webpart 还是因为 FormMain)
我知道我解释得很糟糕。但基本上,你如何判断一个 webpart(提供者)或另一个 webpart 是否发生了回发(以及因此 page_load)?(消费者)
【问题讨论】:
标签: c# asp.net postback web-parts