Asp.Netserver控件开发的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; /// <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实现(四)回发事件》
Asp.Netserver控件开发的Grid实现(三)列编辑器的更多相关文章
- asp.net控件开发基础(1)(转)原文更多内容
asp.net本身提供了很多控件,提供给我们这些比较懒惰的人使用,我认为控件的作用就在此,因为我们不想重复工作,所以要创建它,这个本身便是一个需求的关系,所以学习控件开发很有意思. wrox网站上有本 ...
- 第一篇:初识ASP.NET控件开发_第一节:控件类及其继承关系
1)System.Web.UI.Control(以下简称Control) Control 类是包括自定义控件.用户控件和页在内的所有 ASP.NET 服务器控件的基类..定义由所有 ASP.NET 服 ...
- ASP.NETserver控件使用之Reportviewer 报表
1. Reportviewer 报表 1.1. Reportviewer控件 注:本教程附2个事例: l 演练:在本地处理模式下将数据库数据源与 ReportViewer W ...
- 第一篇:初识ASP.NET控件开发_第二节:HelloWorld
1)步骤一:新建类库项目:Controls,创建新解决方案:CustomLibrary 2)步骤二:在类库项目中添加“ASP.NET服务器控件”新建项:RenderHelloWorld.cs (也可以 ...
- 第一篇:初识ASP.NET控件开发_第三节:“生死有序”的控件生命周期
一.Page本质是一个Control 我们首先要澄清的第一个概念是页面类Page本质是一个控件类,它派生于TemplateControl类,而TemplateControl派生自Control类.既然 ...
- ASP.NET2.0组件控件开发视频 初体验
原文:ASP.NET2.0组件控件开发视频 初体验 ASP.NET2.0组件控件开发视频 初体验 录了视频,质量不是很好,大家体验下.我会重新录制的 如果不清楚,可以看看http://v.youku. ...
- ASP.NET自定义控件组件开发 第五章 模板控件开发
原文:ASP.NET自定义控件组件开发 第五章 模板控件开发 第五章 模板控件开发 系列文章链接: ASP.NET自定义控件组件开发 第一章 待续 ASP.NET自定义控件组件开发 第一章 第二篇 接 ...
- ASP.NET自定义控件组件开发 第四章 组合控件开发CompositeControl
原文:ASP.NET自定义控件组件开发 第四章 组合控件开发CompositeControl 第四章 组合控件开发CompositeControl 大家好,今天我们来实现一个自定义的控件,之前我们已经 ...
- ASP.NET自定义控件组件开发 第四章 组合控件开发CompositeControl 后篇 --事件冒泡
原文:ASP.NET自定义控件组件开发 第四章 组合控件开发CompositeControl 后篇 --事件冒泡 CompositeControl 后篇 --事件冒泡 系列文章链接: ASP.NET ...
随机推荐
- SQL Server 动态行转列(轉載)
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现代码(SQL Codes) 方法一:使用拼接SQL,静态列字段; 方法二:使用拼接SQL, ...
- ExtJs目录说明
Ext开发包目录结构说明builds目录为ExtJS压缩后的代码docs目录为ExtJS的文档examples目录中是官方的演示示例locale是多国语言的资源文件, 其中ext - lang - z ...
- [Jobdu] 题目1520:树的子结构
题目描述: 输入两颗二叉树A,B,判断B是不是A的子结构.注:B为空树时不为任何树的子树 typedef struct BTNode{ int key; struct BTNode *rchild; ...
- Android应用开发提高篇(2)-----文本朗读TTS(TextToSpeech)
链接地址:http://www.cnblogs.com/lknlfy/archive/2012/02/26/2368696.html 一.概述 TextToSpeech,就是将文本内容转换成语音,在其 ...
- BZOJ 1624: [Usaco2008 Open] Clear And Present Danger 寻宝之路( 最短路 )
直接floyd.. ----------------------------------------------------------------------- #include<cstdio ...
- Dojo实现Tabs页报错(一)
1.在用Dojo写tab页的过程中出现了一些错误 dojo源码如下: <%-- Document : grid Created on : 2013-12-15, 18:05:47 Author ...
- [置顶] WebService调用工具(AXIS2)
package com.metarnet.util; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Meth ...
- PHP自练项目之数字与文字的分页效果在函数中实现
/** * * @param $_sql * @param $_size */ function _page($_sql,$_size) { //将里面的所有变量取出来,外部可以访问 global $ ...
- sourceTree安装与使用
1,下载并安装 sourceTree http://downloads.atlassian.com/software/sourcetree/windows/SourceTreeSetup_1.6.14 ...
- DM368 arm板GDB远程调试
参考: http://www.erchashu.com/wiki/eclipse-cdt-gdb-arm-app-cross-debug 远程调试环境由宿主机GDB和目标机调试stub共同构成,两者通 ...