Asp.Netserver控件开发的Grid实现(三)列编辑器
2023-09-14 09:10:23 时间
以下是GridColumnsEditor的实现代码:
GridColumnsEditor.cs
using System; using System.Collections.Generic; using System.ComponentModel.Design; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web.UI.WebControls; namespace AspNetServerControl { public class GridColumnsEditor : CollectionEditor { private Type[] types; /// <summary> /// 构造函数 /// </summary> /// <param name="type">控件类型</param> public GridColumnsEditor(Type type) : base(type) { types = new Type[] { typeof(BoundField) }; } /// <summary> /// 获取此集合编辑器可包括的数据类型 /// </summary> /// <returns>类型集合</returns> protected override Type[] CreateNewItemTypes() { return types; } } }GridColumnsEditor继承自CollectionEditor,CollectionEditor能够给用户提供一个编辑的界面,并集合大部分的数据类型。
在构造函数中GridColumnsEditor(Type type)中,仅仅实现了一个BoundField字段,假设须要其它的字段,能够在后面加入。比方
types = new Type[] { typeof(BoundField), typeof(CheckField) };以下看一下BoundField字段的实现
/// <summary> /// 表格数据绑定列 /// </summary> [ToolboxItem(false)] [ParseChildren(true)] [PersistChildren(false)] public class BoundField : GridColumn { }BoundField继承自GridColumn类,这里也有一个ParseChildren属性,主要是为了嵌套。
以下看一下GridColumn的实现
using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Web.UI; namespace AspNetServerControl { /// <summary> /// 表格列基类(抽象类) /// </summary> [ToolboxItem(false)] [ParseChildren(true)] [PersistChildren(false)] [DefaultProperty("HeaderText")] public class GridColumn : ControlBase { private string _headerText = String.Empty; /// <summary> /// 标题栏显示的文字 /// </summary> [Category(CategoryName.OPTIONS)] [DefaultValue("")] [Description("标题栏显示的文字")] public string HeaderText { get { return _headerText; } set { _headerText = value; } } private string _dataField = String.Empty; /// <summary> /// 字段名称 /// </summary> [Category(CategoryName.OPTIONS)] [DefaultValue("")] [Description("字段名称")] public string DataField { get { return _dataField; } set { _dataField = value; } } } }GridColumn也继承自ControlBase,所以GridColumn事实上也是一个控件,仅仅只是我们将其嵌套在了Grid中。
在Grid中定义Columns的属性时,我们用的是GridColumnCollection类,而该类是一个GridColumn的集合,代码例如以下。
public class GridColumnCollection : Collection<GridColumn> { public GridColumnCollection(ControlBase parent) { } }
再看GridColumn类中,我们定义了HeaderText和DataField属性,这两个属性就是我们在default.aspx页面中编辑Grid时,给BoundField加入的属性。
到此,整个Grid的封装就算完毕了。
假设结合jquerymobile,能够在Grid的Render函数中,根据jquerymobile的表格标记输出。
对于Grid的回发事件处理,请參看《Asp.Netserver控件开发的Grid实现(四)回发事件》
相关文章
- 比较 MySQL 与 ASP 的区别(mysql和asp)
- 深入探索ASP与MySQL的连接之旅(asp测试连接mysql)
- ASP编程操作MySQL数据库(asp访问mysql)
- 3.0Linux系统中运行ASP 3.0的实践(linux运行asp)
- 让Linux支持ASP:开启技术新时代(让linux支持asp)
- 在MySQL5中使用ASP搭建数据库连接(asp连接mysql5)
- 用 ASP 管理 MySQL 源码,轻松获取开发效率(asp管理mysql源码)
- 基于ASP和MySQL的Web实验研究(asp mysql实验)
- ASP操作Oracle6实现最佳数据库连接体验(asp连接oracle6)
- ASP技术保障Oracle数据库安全备份(asp备份oracle)
- ASP程序开发探索之oracle数据库(asp和oracle)
- 白刃之战:PHPvs.ASP.NET(节选)-架构比较
- 给Asp.Net初学者的关于继承和多态性的例子
- 用asp实现网页邮箱访问的方法
- asp之字符串函数示例
- asp实现一个统计当前在线用户的解决方案
- ASP把长的数字用逗号隔开显示的代码
- asp.netAjax安装与卸载方法
- 解决asp.netajaxsys未定义的解决方法
- 分析10个ASP.NET控件最有用的属性详解
- ASP.NET笔记之CKEditor的使用方法