logo 广告
Loading...
 导航 所在位置:论坛首页 -> ┈┋电脑网络┋┈ -> Asp/Asp.Net教程 -> 使用ASP.Net中的自定义控件
回复
标题:使用ASP.Net中的自定义控件收藏 编辑 删除 楼主 | 上一篇 下一篇
想吃麦当劳
头像
等级:社区游民
权限:普通用户
积分:17
金钱:425
声望:24
经验:24
发帖数:100
注册:2008年3月8日
资料 短消息2008-8-14 12:09:30
自定义控件是ASP.NET中很重要的一部分,使用它可以提高程序代码的重用性,即一个自定义控件在网页、自定义控件或控件的内部都可以再次使用。本实例创建的复选框控件列CheckBoxColumn自定义控件也可以在网站的任何地方再次使用。

    本实例介绍如何在ASP.NET中创建自定义控件、如何使用自定义控件,以及如何在自定义控件中定义公开属性和方法的实现方法。

    1.创建新ASP.NET应用程序

    在Visual Studio .NET 2003集成开发环境中创建新的ASP.NET Web应用程序,命名为Example_12_5。

    2.创建自定义控件CheckBoxColumn

    在应用程序Example_12_5中添加文件CheckItem.cs和文件 CheckColumn.cs。其中第一个文件定义类CheckBoxItem实现CheckBox控件;第二个文件定义类CheckBoxColumn 实现DataGrid控件中的CheckBoxColumn列。类CheckBoxItem继承于接口ITemplate,并在其中定义了标识控件名称的属性Name、标识控件数据域的属性DataField、标识控件是否为只读的属性ReadOnly、标识控件是否提交回传的属性 AutoPostBack和绑定控件数据的事件BindData()、当控件的选择项改变时触发的事件OnCheckChanged等。类 CheckBoxItem的程序代码如下:

  internal class CheckBoxItem : ITemplate
    {
    // <summary>
    // CheckBoxItem的构造函数
    // </summary>
    // <param name="editable">控件是否为可编辑</param>
    public CheckBoxItem(bool editable,string Name)
    {
    name = Name;
    readOnly = (editable==true)?false:true;
    }
    // <summary>
    // 实例化CheckBox控件,并添加到容器中
    // </summary>
    // <param name="container">添加控件的容器</param>
    void ITemplate.InstantiateIn(Control container)
    {
    //创建CheckBox控件
    CheckBox box = new CheckBox();
    //设置控件的属性和事件
    box.ID       = name;
    box.DataBinding += new EventHandler(this.BindData);
    box.AutoPostBack = autoPostBack;
    box.CheckedChanged += new EventHandler(this.OnCheckChanged);
    container.Controls.Add(box);
    }
    // <summary>
    //定义控件的事件CheckChanged
    // </summary>
    public event EventHandler CheckedChanged;


  // <summary>
    // 设置控件的事件OnCheckChanged
    // </summary>
    private void OnCheckChanged(object sender, EventArgs e)
    {
    if (CheckedChanged != null){CheckedChanged(sender, e);}
    }
    // <summary>
    //定义控件的属性Name
    // </summary>
    private string name;
    public string Name
    {
    get{return(name);}
    set{name = value;}
    }
    // <summary>
    // 定义控件的属性DataField
    // </summary>
    private string dataField;
    public string DataField
    {
    get{return dataField;}
    set{dataField=value;}
    }
    // <summary>
    // 定义控件的属性AutoPostback
    // </summary>
    private bool autoPostBack = false;
    public bool AutoPostBack
    {
    set{autoPostBack = value;}
    get{return autoPostBack;}
    }
    // <summary>
    // 定义控件的数据绑定函数BindData()
    // </summary>
    private void BindData(object sender, EventArgs e)
    {
    //找到CheckBox控件
    CheckBox box = (CheckBox) sender;
    DataGridItem container = (DataGridItem) box.NamingContainer;
    box.Checked = false;
    box.Enabled = (readOnly == true) ? false:true;
    //获取数据
    string data =
    ((DataRowView) container.DataItem)[dataField].ToString();
    //获取数据类型
    Type t = ((DataRowView)container.DataItem).DataView.Table.Columns[
    dataField].DataType;
    if (data.Length>0)
    {
    switch (t.ToString())
    {   //设置控件的值
    case "System.Boolean":
   if(( data == "True")||(data == "true")){box.Checked = true;}
    break;
    default:break;
    }
    }
    }

  // <summary>
    // 定义控件的属性readOnly
    // </summary>
    private bool readOnly = true;
    }

签名

2008-8-14 12:09:30 顶部
第1页 共页 共0个回复     <<    >>    
 快速回复
  • 支持UBB,HTML标签

  • 高级回复

  • 操作选项:评分 加精 解精 奖惩 设专题 设公告 解公告 固顶 总固顶 解固顶 结帖 解结帖 锁帖 解锁 移帖 删帖
      首页 | 购买指南 | 虚拟主机 | 特色介绍 | 下载中心 | 支付方式
    Copyright 2004-2008 BBSGood.com Powered By: BBSGood.Speed Version 5.0
      咨询电话:0575-85513832、0575-85513825(传真)、7*24小时咨询服务:13606552007 不良信息举报中心 浙ICP备05029817号
      业务QQ:38958768、客服QQ1:415896239、客服QQ2:343896043、MSN:jccsxx@hotmail.com