zoukankan      html  css  js  c++  java
  • 两个WebUserControl之间传值

      两个WebUserControl之间传值,网上的代码有,直接从UserControl1中定位到UserControl2的写法,偶合性很强,感觉不太好,于是提供另外的写法。

      用一个容器Container.aspx来放两个WebUserControl,分别是UC1和UC2。现在假设要从UC1的一个事件触发,把UC1中的一个值传到UC2中。

    1.新增一个Class,代码如下:

    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;


    //delegate要寫在共用class中,這樣的話,才可以讓PegatronEvent在不同的頁面都引用到。
    public delegate void TreeViewEventHandler(object sender, PegatronEvent e);
    public class PegatronEvent : EventArgs
    {
        
    //構造函數
        public PegatronEvent()
        {
        }

        
    //聲明變數
        public string PegatronDeptId;

    }

    2.UC1中写入事件

     

        //給這個usercontrol加一個event
        public event TreeViewEventHandler DeptInfoHandler;

        
    //TreeView的事件,当然用其他事件都OK。
        protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
        {
            PegatronEvent DeptEvent 
    = new PegatronEvent();
            DeptEvent.PegatronDeptId 
    = “我来传东西”;
            
    //以下的事件裏面的參數是一定要寫的,sender可以是某個控件的id,也可以是整個頁面(this);
            
    //DeptEvent也一定要,而且類型一定要是PegatronEvent,因為在App_Code/PegatronEvent.cs已經定義了。
            DeptInfoHandler(this, DeptEvent);
        }

    3.在放两个Usercontrol的页面Container.aspx中加入代码:

    *这是整个过程的最关键点,相当于在两个UserControl之间加一个桥梁。

    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;

    public partial class UI_DepartContainer : System.Web.UI.Page
    {
        
    protected void Page_Load(object sender, EventArgs e)
        {
            UC1.DeptInfoHandler 
    += new TreeViewEventHandler(UC1_DeptInfoHandler);
        }


        
    public void UC1_DeptInfoHandler(object sender, PegatronEvent e)
        {
            
    //取得UserControl的TreeView返回的部門代碼
            UC2.deptid = e.PegatronDeptId.ToString();
        }
    }

    4.在UC2中获得值,不多说了,代码如下:

     

        private string _deptid;

        
    public string deptid
        {
            
    get { return _deptid; }
            
    set 
            { 
                _deptid 
    = value;
            }
        }
  • 相关阅读:
    boot空间不足
    catkin init/build 遇到catkin:command not found 的解决办法。
    ros自定义消息的时候报错ImportError: No module named em
    Opencv——相机标定
    Spring Boot 怎么打一个可执行 Jar 包?
    代码写成这样,老夫无可奈何!
    在外包干了三年,我废了……不吹不黑!
    国庆加了三天班,公司不给钱,咋办?
    面试官问线程安全的List,看完再也不怕了!
    年轻人的第一个自定义 Spring Boot Starter!
  • 原文地址:https://www.cnblogs.com/petitprince/p/1295741.html
Copyright © 2011-2022 走看看