博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Asp.Netserver控件开发的Grid实现(三)列编辑器
阅读量:6262 次
发布时间:2019-06-22

本文共 2872 字,大约阅读时间需要 9 分钟。

以下是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;        ///         /// 构造函数        ///         /// 控件类型        public GridColumnsEditor(Type type)            : base(type)        {            types = new Type[] {                 typeof(BoundField)            };        }        ///         /// 获取此集合编辑器可包括的数据类型        ///         /// 
类型集合
protected override Type[] CreateNewItemTypes() { return types; } }}
GridColumnsEditor继承自CollectionEditor,CollectionEditor能够给用户提供一个编辑的界面,并集合大部分的数据类型。

在构造函数中GridColumnsEditor(Type type)中,仅仅实现了一个BoundField字段,假设须要其它的字段,能够在后面加入。比方

types = new Type[] {                 typeof(BoundField),		typeof(CheckField)            };
以下看一下BoundField字段的实现

///     /// 表格数据绑定列    ///     [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{    ///     /// 表格列基类(抽象类)    ///     [ToolboxItem(false)]    [ParseChildren(true)]    [PersistChildren(false)]    [DefaultProperty("HeaderText")]    public class GridColumn : ControlBase    {        private string _headerText = String.Empty;        ///         /// 标题栏显示的文字        ///         [Category(CategoryName.OPTIONS)]        [DefaultValue("")]        [Description("标题栏显示的文字")]        public string HeaderText        {            get            {                return _headerText;            }            set            {                _headerText = value;            }        }        private string _dataField = String.Empty;        ///         /// 字段名称        ///         [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
{ public GridColumnCollection(ControlBase parent) { } }
再看GridColumn类中,我们定义了HeaderText和DataField属性,这两个属性就是我们在default.aspx页面中编辑Grid时,给BoundField加入的属性。

到此,整个Grid的封装就算完毕了。

假设结合jquerymobile,能够在Grid的Render函数中,根据jquerymobile的表格标记输出。

对于Grid的回发事件处理,请參看《》

转载地址:http://vbzpa.baihongyu.com/

你可能感兴趣的文章
深入理解学习Git工作流(转)
查看>>
oss php sdk+laravel搭建图片处理静态网站
查看>>
深入理解Tomcat系列之二:源码调试环境搭建(转)
查看>>
thinkphp学习笔记6—url模式
查看>>
像npm一样在Andriod项目中引入Gradle依赖
查看>>
智慧城市建设掀起热潮 潜在市场规模高达20万亿
查看>>
【SSH系列】hibernate映射 -- 一对一双向关联映射
查看>>
windows添加snmpd
查看>>
2017MMC智慧出行体验周 Mobile & Mobility Connectivity 2017
查看>>
那年不“匆匆”---我的2014年总结
查看>>
如何搭建企业的「大数据视野」? 五个步骤帮你搞定
查看>>
CentOS 7 systemd的坑
查看>>
阿里云 CDN HTTPS 最佳实践——动态密钥套件
查看>>
Converting Between YUV and RGB
查看>>
浅谈大数据:如何成为大数据企业?
查看>>
多国语言字符串的加密、全文检索、模糊查询的支持
查看>>
大数据中心在医院的落地,需如何去做集成融合与利用
查看>>
新金融时代,区域性银行、本地大银行怎样成为大而强的银行?
查看>>
UIViewController/ApplicationSequ…
查看>>
五个可以避免的BYOD错误
查看>>