zoukankan      html  css  js  c++  java
  • 用户控件 WebUserControl .ascx

    用户控件:WebUserControl   添加新项-用户控件 .ascx后缀,
                派生.UserControl与页面的父类不是一个  是要嵌在页面里面使用
    使用方法:直接设计页面拖到要放置的位置,出现以下两项

    <%@ Register src="WUC.ascx" tagname="WUC" tagprefix="uc1" %>

    <uc1:WUC ID="WUC1" runat="server" />

    路径 4个  
        1:控件路径,image,超链接,指向页面

        第一步:在WUC.ascx页面上:
        <img  src="Image/暴风截图2015102133868160.jpg" runat="server"id="id1"/><%--变成服务器控件--%>

            在控件里加两项内容;runat="server" id="id1";将控件变成变成服务器控件,用户控件下这两项内容缺一不可,
            防止不是在同一级文件夹下找不到文件,服务器自动转换路径
            

        2:样式表中用户控件路径 利用外部样式表,不要写内联的样式表
    第一步:添加新项-样式表
        将用的页面添加到head里面

         样式表页面CSS.css
          #aa {
        background-image:url(../Image/暴风截图2015102133868160.jpg) ;//  ../
            height:100px;
            100px

    }
    第二步:在WUC.ascx页面上:

        < div id="aa" ></div>

        

        3:外部资源路径 外部的js文件  ,需要调用函数来处理路径

    第一步;添加新项-JavaScript文件
           JavaScript.js页面:
           alert("你好");

    第二步:   WUC.ascx.cs:写函数

            public string ShowPath()
        {

            string path = "Script/JavaScript.js";
            path = ResolveClientUrl(path);//获取客户端浏览器可以使用的路径url
            return path;
        }
       
    第三步:  WUC.ascx页面上:直接拖过控件

           <script src="<%=ShowPath()%>"></script>


        4:页面路径:用户控件按钮点击跳转页面
            用户控件按钮点击时跳转页面:将相对路径转换为绝对路径
                           ~ 在服务器上表示网站的根目录
            protected void Button1_Click(object sender, EventArgs e)
            {
              Response.Redirect("~/main.aspx");
            }



    二:传值
       AAAA1:页面向用户控件传值
          a;findcontrol 传值
              
              .aspx按钮中
              //1.取页面控件按钮的值
            string s = TextBox1.Text;
            //2去用户控件找文本框
            TextBox text = WUC1.FindControl("TextBox1") as TextBox;
            //3.将页面文本值赋值给用户控件的文本框
            text.Text = s;

          b:属性传值
    第一步:用户控件里面写一个属性;
           public string Txt
        {
            get
            {
                return TextBox1.Text;
            }

            set
            {
                TextBox1.Text=value;
            }
        }

    第二步:在页面按钮里写
         protected void Button1_Click(object sender, EventArgs e)
        {
           
            //WUC1.Txt = TextBox1.Text;//用页面上取值给用户控件
            TextBox1.Text = WUC1.Txt;//从用户控件里面取给页面


        }

    第三步:页面控件按钮点击时:
         protected void Button1_Click(object sender, EventArgs e)
        {
           // 找到用户控件的属性
            WUC1.Txt = TextBox1.Text;
        }




    BBBB2:用户控件向页面传值:
          a:用session传值:
    第一步:在用户控件:
                 protected void Button1_Click(object sender, EventArgs e)
            {
            
            Session["txt"] = TextBox1.Text;
             }
        


    第二步:在页面上重写onloadcomplete()事件:在子类中对父类的方法的重写,
           防止数据延迟 override onloadcomplete()
            // 在页面加载完成后对页面家安在完成后对父类方法的重写
             protected override void OnLoadComplete(EventArgs e)
             {
                 base.OnLoadComplete(e);

                 if (Session["txt"] != null)
                {
                TextBox1.Text = Session["txt"].ToString();
                }
             }





    建议用  b:委托或代理;指向方法的引用,引用指向方法,,好用但是难理解;只改变指向的方法即可 delegete

                Dog d=New Dog();d引用指向的是Dog类的对象
                string s="ssss";s指向的是字符串
                public void Show(Dog);引用指向方法,指向方法的引用

                1:定义一个类
                class Dog
                {


                public int Dog;
                public void walk();

                }
                2:声明一个dog对象
                Dog d;
                3:将该引用指向Dog
                
                 d=New Dog();

                4:用该引用调对象的方法


         代理:指向方法的引用 和事件很像
        
             签名:返回类型  void,参数列表string s;

    y        1:定义一个代理 //用户控件里面
                 //加上delegate后,ShowDelegate不是原来的函数名而是代理类型名

                 public delegate void ShowDelegate(string s);
            
            2:声明一个代理的引用 //用户控件里面

            // 前面加上public后在其他类里面可以用
                 public ShowDelegate show;

            
            3:在具体页面上页面加载时3;将代理的引用指向签名匹配的(函数)方法; 可以和手动挂事件一样 ,
               += 可以挂很多事件,事件本质就是一个特殊的代理。可以指向很多方法只要签名一致就可以,
            
            show=new ShowDelegate(DO);

             protected void Page_Load(object sender, EventArgs e)
        {
            //3.将该引用指向签名匹配的函数(方法)
            //WUC1.Show = new WUC.ShowDelegate(ShowText);

            WUC1.Show += ShowText;
            
        }
            
            4:用代理调用方法 在用户控件button里面

             show("aa");

             protected void Button1_Click(object sender, EventArgs e)
        {
          

            //.调用Show方法
            string s = TextBox1.Text;
            Show(s);

        }

             5:在实际页面写函数。签名必须和代理类型的一样
            public void Do(string s)
            {

            TextBox1.Text=A;
            }
  • 相关阅读:
    spring定时器的cronexpression表达式
    Mybatis Generator的model生成中文注释,支持oracle和mysql(通过实现CommentGenerator接口的方法来实现)
    ORA-12505, TNS:listener does not currently know of SID given in connect desc
    The Network Adapter could not establish the connection
    Shell中的>/dev/null 2>&1 与 2>&1 >/dev/null 与&>/dev/null 的区别
    大道至简、大智若愚—GO语言最佳详解实践
    rsync使用详解
    一次TIME_WAIT和CLOSE_WAIT故障和解决办法
    Go的CSP并发模型实现:M, P, G
    如何优雅打印nginx header和body
  • 原文地址:https://www.cnblogs.com/cf924823/p/5157633.html
Copyright © 2011-2022 走看看