zoukankan      html  css  js  c++  java
  • WebPart 控件之间通讯 笔记

    引用网络:

    在一个页面中的WebPart控件之间是相互独立的,依赖与它的通信机制我们可以实现基于静态连接和动态连接的WebPart通信。
    在互相通信的WebPart控件之间,一方作为Provider,另一方作为Consumer,他们之间的数据交互由WebPartManager来管理。在同一个页面中,可以存在多对通信,同一个Provider可以与多个Consumer通信,但是一个Consumer只能从一个Provider那获取数据。
    实现WebPart通信的方法:
    (1)定义接口
    (2)实现接口成员
    (3)在Provider中实现[ConnectionProvider]方法
    (4)在Consumer中实现[ConnectionConsumer]方法
    (5)在WebPartManager中声明静态连接

    基于动态的连接的WebPart通信只是不需要在WebPartManager中声明静态连接,并且添加了一个ConnectionsZone。

    然后将WebPartManager模式改为 WebPartManager1.DisplayMode = WebPartManager.ConnectDisplayMode;

    如图:

    根据网络代码改写如下:

    1、定义接口:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    namespace WebTest
    {
        public interface IEmployeeInfo
        {
            string EmployeeID { get; }
        }
    }
    

    2、接口提供者实现

    做一个用户控件来实现

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    
    namespace WebTest
    {
        public partial class WebUserControl1 : System.Web.UI.UserControl,IEmployeeInfo
        {
            public string temp { get; set; }
            protected void Page_Load(object sender, EventArgs e)
            {
    
            }
    
            [ConnectionProvider("KeyWord", "KeyWordProvider")]
            public IEmployeeInfo KeyWordProvide()
            {
                return this;
            }
    
            public string EmployeeID
            {
                get
                {
                    return temp;
                }
            }
    
            protected void Button1_Click(object sender, EventArgs e)
            {
                temp = TextBox1.Text;
            }
        }
    }
    

    上面的代码做了一些变动,做一个属性来记录,这样多添加其它按钮时就不会传值了,其实就是传了空值。

    3、接口阅读者

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    
    namespace WebTest
    {
        public partial class WebUserControl2 : System.Web.UI.UserControl
        {
            protected void Page_Load(object sender, EventArgs e)
            {
    
            }
    
            [ConnectionConsumer("EmployeeIDConsumer", "EmployeeIDConsumer")]
            public void GetEmployeeInfo(IEmployeeInfo empInfo)
            {
                TextBox1.Text = empInfo.EmployeeID;
            }
        }
    }
    

    3、页面引用

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="WebTest.WebForm2" %>
    
    <%@ Register src="WebUserControl1.ascx" tagname="WebUserControl1" tagprefix="uc1" %>
    
    <%@ Register src="WebUserControl2.ascx" tagname="WebUserControl2" tagprefix="uc2" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:WebPartManager ID="WebPartManager1" runat="server">
            <StaticConnections>
    
            <asp:WebPartConnection ID="EmpConnection" ProviderID="WebUserControl11" ProviderConnectionPointID="KeyWordProvider" ConsumerID="WebUserControl21" ConsumerConnectionPointID="EmployeeIDConsumer" />
    
        </StaticConnections>
            </asp:WebPartManager>
            <asp:WebPartZone ID="WebPartZone1" runat="server">
                <ZoneTemplate>
                    <uc1:WebUserControl1 ID="WebUserControl11" runat="server" />
                </ZoneTemplate>
    
            </asp:WebPartZone>
            <asp:WebPartZone ID="WebPartZone2" runat="server">
                <ZoneTemplate>
                    <uc2:WebUserControl2 ID="WebUserControl21" runat="server" />
                </ZoneTemplate>
            </asp:WebPartZone>
        </div>
        </form>
    </body>
    </html>

    所有代码:代码下载

      

  • 相关阅读:
    Linux小技巧1:如何关闭Root用户SSH登陆
    PXE DHCP获取IP与传统DHCP获取IP地址的区别
    记录一次Tomcat内存泄露原因的追溯
    ZTE交换路由设备配置的备份与恢复
    启动oracle的步骤
    打开dbca,创建oracle数据库
    【转】ITPUB成员常去的几个站
    【mysql】常用命令总结
    【SQL Server】Count(*) vs Count(1) 区别
    表的设计和主键选择
  • 原文地址:https://www.cnblogs.com/stalwart/p/3108477.html
Copyright © 2011-2022 走看看