asp.net学习之扩展GridView
本节讨论如何从现有的控件,进而扩展成强大的,更定制的GridView控件
1.扩展BoundField
默认的BoundField不能显示多文本,文字一多,就会扩大整个Table的Height值,解决这个问题的方法可以通过TemplateField加入Div控件来解决,但是,也可以从BoundField类上进行扩展,加入一点特有的功能,让他能够显示多文本
例1: 创建长文本字段
===App_code\myControls.cs===
Codenamespace myControls{ // 自定义GridView的Field字段,该字段能够在显示模式下 // 显示多行文本,在编辑模式下显示多行输入框 public class LongTextField: BoundField // 继承BoundField { private Unit _width = new Unit("250px"); private Unit _height = new Unit("60px"); // LongTextField有两个属性,分别是Widht和Height. public Unit Width { get { return _width; } set { _width = value; } } public Unit Height { get { return _height; } set { _height = value; } } // InitializeDataCell 方法是一种帮助器方法,用于初始化 BoundField 对象中的单元格 // 扩展 BoundField 类时,可以重写该方法,以执行自定义初始化例程。 protected override void InitializeDataCell(DataControlFieldCell cell, DataControlRowState rowState) { // 不处于编辑模式下 if((rowState&DataControlRowState.Edit)==){ HtmlGenericControl div = new HtmlGenericControl("div"); //创建一个Html中的div控件 div.Attributes["class"] = "longTextField"; //通过HtmlTextWriterStyle设置div控件的样式 div.Style[HtmlTextWriterStyle.Width] = _width.ToString(); div.Style[HtmlTextWriterStyle.Height] = _height.ToString(); div.Style[HtmlTextWriterStyle.Overflow] = "auto"; // div控件的DataBinding事件发生时,调用div_DataBinding函数 div.DataBinding += new EventHandler(div_DataBinding); cell.Controls.Add(div); } else { TextBox txtEdit = new TextBox(); txtEdit.TextMode = TextBoxMode.MultiLine; txtEdit.Width = _width; txtEdit.Height = _height; // txtEdit的DataBinding事件发生时,调用txtEdit_DataBinding函数 txtEdit.DataBinding += new EventHandler(txtEdit_DataBinding); cell.Controls.Add(txtEdit); } } void div_DataBinding(object sender,EventArgs e) { HtmlGenericControl div = (HtmlGenericControl)sender; // 取得控件 object value = this.GetValue(div.NamingContainer); // Get the field value; div.InnerText = this.FormatDataValue(value, this.HtmlEncode); // Assign the formatted value } void txtEdit_DataBinding(object sender,EventArgs e) { TextBox txtEdit = (TextBox)sender; Object value = this.GetValue(txtEdit.NamingContainer); // Get the field value txtEdit.Text = this.FormatDataValue(value, this.HtmlEncode); } }}
===custer_list.aspx===
Code<%@ Register TagPrefix="custom" Namespace="myControls" %> <!-- 引入LongTextField类型 --><asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="Id" DataSourceID="SqlDataSource1"> <Columns> <asp:BoundField DataField="Id" HeaderText="Id" InsertVisible="False" ReadOnly="True" SortExpression="Id" /> <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" /> <asp:BoundField DataField="Director" HeaderText="Director" SortExpression="Director" /> <custom:LongTextField DataField="Description" Width="300px" height="60px" HeaderText="Movie Description" /> </Columns></asp:GridView>
2.扩展ButtonField
扩充的ButtonField能够具有警告作用,即在点击时能够弹出确认消息。
例2:扩展ButtonField字段
Codepublic class DeleteButtonField : ButtonField{ private string _confirmMessage = "确认要删除吗?"; public string ConfirmMessage { get { return _confirmMessage; } set { _confirmMessage = value; } } // 默认情况下,作为删除按钮,按钮上显示删除字样 public DeleteButtonField() { this.CommandName = "Delete"; this.Text = "删除"; } public override void InitializeCell(DataControlFieldCell cell, DataControlCellType cellType, DataControlRowState rowState, int rowIndex) { base.InitializeCell(cell, cellType, rowState, rowIndex); if(cellType==DataControlCellType.DataCell) //如果是数据Cell { WebControl button = (WebControl)cell.Controls[]; button.Attributes["onclick"] = String.Format("return confirm('{0}');", _confirmMessage); } }}
3.待续…
asp.net学习之扩展GridView的更多相关文章
- asp.net学习之GridView事件、GridViewRow对象
原文:asp.net学习之GridView事件.GridViewRow对象 1. GridView控件的事件 GridView有很多事件,事件可以定制控件的外观或者行为.事件分为三类 1.1 ...
- asp.net学习之GridView七种字段
原文:asp.net学习之GridView七种字段 asp.net中GridView绑定到数据源时,可以自动显示数据源的各个字段.只要设定其AutoGenerateColumns为TRUE即可.但这, ...
- asp.net学习之数据绑定控件、数据源控件概述
原文:asp.net学习之数据绑定控件.数据源控件概述 1.asp.net数据绑定控件分为三大类,每个类分别进行详细: ● 列表式数据绑定控件: 列表式数据绑定控件常用来在一个表格内的一个字 ...
- asp.net学习之DataList控件
asp.net学习之DataList控件 DataList控件与Repeater控件一样由模板驱动,与Repeater控件不同的是: DataList控件默认输出是一个HTML表格.DataLis ...
- asp.net学习之 数据绑定控件--表格绑定控件
原文:asp.net学习之 数据绑定控件--表格绑定控件 数据绑定 Web 服务器控件是指可绑定到数据源控件,以实现在 Web 应用程序中轻松显示和修改数据的控件.数据绑定 Web 服务器控件 ...
- asp.net学习之ado.net(连接模式访问)
原文:asp.net学习之ado.net(连接模式访问) ado.net框架支持两种模式的数据访问: 连接模式(Connected)和非连接模式(disconnected).这一节介绍如何使用连 ...
- asp.net学习之ado.net(无连接模式中的DataAdapter)
原文:asp.net学习之ado.net(无连接模式中的DataAdapter) 在非连接模式下,主要讨论以下对象:DataAdapter. DataAdpater的作用是在物理存储模式的数据 ...
- asp.net学习之SqlDataSource
原文:asp.net学习之SqlDataSource 通过 SqlDataSource 控件,可以使用 Web 服务器控件访问位于关系数据库中的数据.其中可以包括 Microsoft SQL Serv ...
- ASP.NETCore学习记录(一)
ASP.NETCore学习记录(一) asp.net core介绍 Startup.cs ConfigureServices Configure 0. ASP.NETCore 介绍 ASP.N ...
随机推荐
- BZOJ-2115-Xor-WC2011
叙述性说明 分析 我把文库里的粘了过来. 仅仅知道点1到点N的一条路径和图中若干个环.就能通过异或,表示成全部路径.那么.须要多少环才干保证必然能表示成全部路径呢?事实上.并不须要非常多, 由于一些环 ...
- 【6】和作为连续序列s
称号:输入一个整数s,并打印出所有s整数的连续序列(含有至少2的数量). 如输入9,输出2.3.4和4.5两个序列 方案一:因为序列至少要2个数,则两个数上限值为(1+s)/2,我们能够枚举该序列的起 ...
- CKEditor上传插件
CKEditor上传插件 前言 CKEditor上传插件是不是免费的,与您分享在此开发.这个插件是基于ASP.NET MVC下开发的,假设是webform的用户或者其他语言的用户.能够參考把serve ...
- js淡入淡出
示例: js淡入淡出 原理:更改css不透明数值 知识点: css不透明 filter:alpha(opacity:30); opacity:0.3;} 小技巧: 小于临界值,做加速 大于临界值,做减 ...
- sql二进制数据权限
(3为权限组合值,结果为1=列表 2=新建 4=修改 8=删除) select 3 & 1 select 3 & 2 select 3 & 4 select 3 & 2 ...
- Heibernate 入门笔记(一)---第一个demo
最近在学heibernate,是看马士兵老师的视频学的,在这里总结一下,做点笔记.关于heibernate的优点,大家可以在网上 百度,这里不做赘述,直接讲怎么使用heibernate 步骤一:新建项 ...
- VS2012 编译程序时报无法载入PDB文件错误解决方式
VS2012 编译程序时报无法载入PDB文件错误解决方式 "ConsoleApplication1.exe"(Win32): 已载入"C:\Users\hp\Docume ...
- linux文件打开模式
文件打开 int open(const char *pathname, int flags, mode_t mode); 普通方式(Canonical mode) flags中没有设置O_SYN ...
- 微软最牛MS08-067漏洞各系统补丁下载地址
本次MS08-067严重漏洞各系统补丁地址例如以下: 中文操作系统KB958644补丁下载地址: Windows Vista 安全更新程序 (KB958644) http://download.mic ...
- 返璞归真 asp.net mvc (10) - asp.net mvc 4.0 新特性之 Web API
原文:返璞归真 asp.net mvc (10) - asp.net mvc 4.0 新特性之 Web API [索引页][源码下载] 返璞归真 asp.net mvc (10) - asp.net ...