首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Dotnet频道
中国IT教育
Google
首页 ASP.NET  C#  XML/WebService ADO.NET VC.NET VB.NET .NET 资讯动态 专题 RSS订阅 讨论 下载
您现在的位置: 中国IT实验室 >> Dotnet >> ASP.NET >> 正文

使用ASP.Net中的自定义控件

     自定义控件是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;
    }


  

[1] [2] [3] [4] [5] [6] [7] 下一页

【责编:Luzi】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·WEB程序开发--ASP.NET和PHP、JSP究竟学哪个?
 ·五步带你入门XML
 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题…
 ·展现C#世界 C#程序设计专题…
 今日更新
 社区讨论
 博客论点
 频道精选
 Dotnet频道相关导航