【问题标题】:Problem grasping webpart communication掌握webpart通信的问题
【发布时间】: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


    【解决方案1】:

    所有这一切的答案都不是微不足道的。

    我最终编写了自己的“webpart 通信”,它实际上比 ASP.Net 干净得多,并且可以在 Init 和 Load 等期间工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-10
      • 2023-01-18
      • 2015-10-27
      • 2021-10-09
      相关资源
      最近更新 更多