当前位置:首页 > 新闻中心 >

Asp.Net服务器控件开发的Grid实现(三)

Asp.Net服务器控件开发的Grid实现(三)

下面是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的表格标记输出。




企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:咸宁网站制作 http://xianning.666rj.com

上一篇:Python 自学开始(二,基础)

下一篇:最后一页