webform用户控件

一,用户控件与页面的区别

1.扩展名:用户控件——.ascx  页面——.aspx

2.内容:页面有完整的HTML标记,用户控件没有

3.声明指示符:页面<%@ Page ...%>  用户控件<%@ Control ...%>

4.类的派生:页面派生自Page,用户控件派生自UserControl

5.页面可以独立运行,用户控件不能,它只能放在页面中才能运行

二,用户控件的好处

1.最大限度的实现代码重用,省去重复写代码的麻烦

2.团队合作时可以实现分工开发,节省时间

3.结构良好

三,用户控件使用过程中的几个难点

1.交换信息

(1)从外向内操作——在页面中操作用户控件里面的控件

I,事先给用户控件定义属性,通过属性给用户控件赋值

案例:在页面中点击按钮将文本框中的值送到用户控件里的Lable中去

先在用户控件中定义一个LableValue的属性

 public string LabelValue
    {
        get
        {
            return Label1.Text;
        }
        set
        {
            Label1.Text = value;
        }
    }

在页面中编写按钮点击的代码

  protected void Button1_Click(object sender, EventArgs e)
    {
        //把文本框的值取出来
        string s = TextBox1.Text;

        //送到用户控件的label中去
        WUC1.LabelValue = s;
    }

II,使用用户控件对象的FindControl()方法找到它里面的控件,强制转换出来对它进行操作

 protected void Button2_Click(object sender, EventArgs e)
    {
        //把文本框的值取出来
        string s = TextBox1.Text;

        //送到用户控件的label中去
        Label lbl = (Label)WUC1.FindControl("Label1");
        lbl.Text = s;
    }

(2)从内向外操作——在用户控件中操作它所在页面的控件

2.路径(必须在同一级别目录下)

(1)标签/控件(不是从工具箱里拖出来的控件,是自己手写的HTML标签)的路径——只需在其标签内加上runat=server标记即可(注:此时必须再加上id=“xxx”)

(2)样式表的路径——使用外部样式表(样式表的目录和图片目录是固定的,无论页面和用户控件在哪个目录下都不影响样式表中的路径)

(3)外部脚本文件的路径——使用ResolveClientUrl()来动态转换路径

(4)C#代码路径问题——Response. Redirect("~/路径"):按目录从上到下的顺序找

<script src="<%=ResolveClientUrl("Script/JavaScript.js")%>"></script>   //括号内为JS脚本代码路径

3.命名——任何带有runat=server的标签/控件,放到用户控件中后,在生成的HTML中,它的ID和Name都会发生一些变化。

Web标准控件的ID,ClientID,UniqueID区别?
ID - 设计时候的控件的ID。控件的这个对象的变量名。
ClientID - 运行呈现为HTML后的ID名。
UniqueID - 运行呈现为HTML后的Name名。

如何在JS中获得它们生成出来的HTML中的ID

var t = document.getElementById("<%= TextBox1.ClientID %>");

案例1:新闻分类显示

1.造用户控件,将每种类型的新闻都造成一个用户控件(此处只造一个用户控件即可,在其中利用添加属性的方法。给其设置不同的新闻类型来控制其显示不同的内容)

public partial class NewsUC : System.Web.UI.UserControl
{
    private string _NewsType;
    public string NewsType
    {
        set
        {
            _NewsType = value;
        }
    }
    private string _BgColor;
    public string Bgcolor
    {
        get
        {
            return _BgColor;
        }
        set
        {
            _BgColor = value;
        }
    }
    private NewsDBDataContext context = new NewsDBDataContext();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            var q1 = context.News.Where(p=>p.type==_NewsType);
            Repeater1.DataSource = q1;
            Repeater1.DataBind();
        }

    }
}

2.在用户控件中设计界面,使用Repeater

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="NewsUC.ascx.cs" Inherits="NewsUC" %>
<div style="background-color:<%=Bgcolor%>;">
<asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>
       <div style="margin-bottom:10px;font-size:12px;">
           <span><%#Eval("title") %></span>(<span><%#Eval("time","{0:yyyy.MM.dd}") %></span>)
       </div>
    </ItemTemplate>
</asp:Repeater>
</div>

3.造主页面,显示不同类型的新闻,并给其加上事先设置好的属性

<body>
    <form id="form1" runat="server">
        国内新闻:<br />
        <br />
        <uc1:NewsUC ID="NewsUC1" runat="server" NewsType="0" Bgcolor="#FFFFaa" />
        <p>
            国际新闻</p>
        <uc1:NewsUC ID="NewsUC2" runat="server" NewsType="1" Bgcolor="#aaFFFF" />
        <p>
            娱乐新闻</p>
        <uc1:NewsUC ID="NewsUC3" runat="server" NewsType="2" Bgcolor="#FFaaFF" />
        <p>
            财经新闻</p>
        <uc1:NewsUC ID="NewsUC4" runat="server" NewsType="3" Bgcolor="#aaFFaa" />
    </form>
</body>
时间: 2024-08-02 14:52:28

webform用户控件的相关文章

WebForm 用户控件 委托 实现 textbox后台赋值 调用端处理实现 textchange

新建一个简单的用户控件,如下图所示 textbox只读,button按钮模拟实现一堆业务逻辑后对textbox赋值. 用户控件后台代码也很简单 public partial class UTTControl : System.Web.UI.UserControl { public delegate void CompanychangedDelegate(); public event CompanychangedDelegate companychange; protected void Pag

用户控件&amp;自定义控件----.Net再学

开始学习.Net到现在两年了快,开始学习java 也有大半年了,中间做项目,又开始.Net的学习.这次做.Net项目,后台代码敲的不是太多,重点放在了UI上,这也是这篇博客要写的内容有关,做UI就少不了控件的使用.这次做UI 主要是提取公共,抽象控件. 敲代码,就离不开控件,那是第一次.Net学习过之后,对于控件的认识很肤浅,通过这次学习,又弥补了对UI控件的认识.这篇博客要说的是:用户控件和自定义控件.提到这两种控件,想必编程的孩子们都不陌生,但是谈到使用,谈到他们的区别,伙伴们清楚吗? 我们

【asp.net】用户控件&amp;自定义控件

在原来的学习中,从vb到asp.net我们都接触了很多的控件,这些控件为我们的程序开发提供了很多的便利,在程序开发中,许多功能或代码都需要重复的使用,我们在牛腩的时候学习了模板方法和重复代码添加工具箱调用的方法,提高了效率.在功能方面使用了母版页,在asp.net中又学习了用户控件和自定义控件,开发人员可以自行开发用户控件和自定义控件以提高代码的复用性.下面来简单介绍一下这两种控件. 一.用户控件: 定义: 用户控件是用户自定义的可重用的一种控件,用户控件用.ascx文件表示,它不是编译代码,编

用户控件与页面间相互给各自的控件赋值

用户控件 ->页面 ((Label)this.Parent.Page.FindControl("AAA")).Text = "ABC"; AAA:页面控件ID Label:页面控件类型 页面 -> 用户控件 ((HiddenField)POPUSER_1.FindControl("hidNO")).Value = "VNBB"; POPUSER_1:用户控件ID HiddenField:用户控件中需要处理的控件的类

用户控件,动态创建添加用户控件

用户控件的制作步骤 1,新建一个项目,文件>新建>项目. 2,添加>新建项>用户控件.文件类型为.cs 使用用户控件 在用户控件设计业点击工具栏中的生成项,选择第一项生成解决方案,或直接点F6: 生成成功后在windows窗体的工具栏最顶端就会显示此用户控件 动态添加控件 输入一个值为n,点击按钮,动态生成n个按钮,并编号号 private void button1_Click(object sender, EventArgs e) { //先获取用户输入的是几 int count

WinForm用户控件、动态创建添加控件、timer控件--2016年12月12日

好文要顶 关注我 收藏该文 徐淳 关注 - 1 粉丝 - 3 0 0 用户控件: 通过布局将多个控件整合为一个控件,根据自己的需要进行修改,可对用户控件内的所有控件及控件属性进行修改使用 动态创建添加控件: 1 //定义控件类型 2 Button btn = new Button(); 3 //控件名称……等属性,也可以直接绑定各种事件 4 btn.Name = "mybutton" + i.ToString(); 5 //添加到窗体 this 可以替换为 容器控件 6 this.Co

无边框窗体和用户控件以及权限

无边框窗体: 就是吧窗体的边框去掉,然后自己做按钮设置功能. 无边框窗体的移动: 将下面代码直接复制粘贴,将窗体的鼠标按下事件的方法改成下面方法的名字就可以直接使用 1 //窗体移动API 2 [DllImport("user32.dll")] 3 public static extern bool ReleaseCapture(); 4 [DllImport("user32.dll")] 5 public static extern bool SendMessag

js清空web用户控件的值

假设你的用户控件里面有: <asp:DropDownList ID="DropDownList1" runat="server"> <asp:ListItem Text="111" Value="111"></asp:ListItem> </asp:DropDownList> 然后你在aspx页面中注册这个控件: <%@ Register Src="~/WebUs

用户控件(二)--常见4 种路径问题解决:

二.路径:1.问题: 添加到用户控件中的图片以及超链接 都会有固定的路径,当将用户控件用到其他页面中后,对应的页面路径需要发生变化,否则无法正常作用显示:解决: 在添加到用户控件中的 HTML 标记或者标准控件中添加:runat= server id=“id名”:这样服务端会根据使用情况自动更正图片或者超链接路径:注意: 超链接可以直接使用标准控件:Hyperlink 它里面直接带 runat=server: 2.问题?样式表中值的路径:(例)background-image:url(路径) 解