027. asp.net中数据绑定控件之 GridView控件
GridView控件支持下面的功能:
绑定至数据源控件, 如SqlDataSource
内置排序功能
内置更新和删除功能
内置分页功能
内置行选择功能
可以编程方式访问GridView对象模型以动态设置属性 处理事件等
多个键字段
用于超链接列的多个数据字段
可通过主题和样式自定义外观
Girdview控件常用属性:
BackImageUrl |
背景图片 |
EmptyDtatText |
没有任何数据时显示的文字 |
GridLines |
网格线的样式 |
ShowHeader |
是否显示页首连接 |
ShowFooter |
是否显示页尾连接 |
AllowSorting |
是否启用排序功能 |
AllowPaging |
是否启用分页功能 , 启用为True, 否则为false |
AutoGenerateColumns |
是否为数据源中的每个字段自动创建绑定字段 |
AutoGenerateDeleteButton |
是否自动产生删除按钮 |
AutoGenerateEditButton |
是否自动产生编辑按钮 |
AutoGenerSelectButton |
是否自动产生选择按钮 |
EnableSortingAndPagingCallbacks |
是否启用排序和分页的异步支持 |
Enabled |
获取或设置一个值, 该值指示是否启用Web服务器控件 |
EnableTheming |
是否启用主题 |
EnableViewState |
是否启用ViewState状态 |
DataKeyNames |
string[]数据类型, 该数组包含了显示在GridView控件中的项的主键字段的名称 |
DataMember |
当数据源包含多个不同的数据项列表是, 获取或设置数据绑定控件绑定到的数据列表的名称 |
DataSource |
数据绑定控件从该对象中检索其数据项列表 |
DataSourceID |
数据源控件的ID, 数据绑定控件从该控件中检索要绑定的数据 |
Caption |
设置标题文字 |
CaptionAlign |
标题文字的对齐方式 |
AltenatingRowStyle |
设置交换数据行的外观 |
EditRowStyle |
设置编辑模式下数据行的外观 |
EmptyDataRowStyle |
设置空数据行的外观 |
FooterStyle |
设置页尾数据行的外观 |
HeaderStyle |
设置页首数据行的外观 |
HorizontalAlign |
设置GridView控件在页面上的水平对齐方式 |
PageCount |
获取在GridView控件中显示所需的分页数 |
PagerStyle |
设置页面导航栏的外观 |
RowStyle |
设置数据行的外观 |
SelectRowStyle |
设置已选择数据行的外观 |
SortDirection |
获取正在排序的列的排序方向 |
SotreExpression |
获取与正在排序的列关联的排序表达式 |
GridView常用方法:
ApplyStyleSheetSkin |
将样式表中定义的样式属性应用到控件 |
DataBind |
将数据源绑定到GridView控件中, 只有使用该方法绑定, 才能将数据源中的数据显示在控件中 |
DeleteRow |
从数据源中删除位于指定索引位置的记录 |
FindControl |
在当前的命名容器中搜索指定的服务器控件 |
Focus |
为控件设置输入焦点 |
GetType |
获取当前示例的Type |
HasControls |
确定服务器控件是否包含任何子控件 |
IsBindableType |
确定指定的数据类型是否绑定到GridView控件中的列 |
Sort |
根据指定的排序表达式和方向对Gridview控件进行排序 sortExpression 对GridView控件进行排序时使用的排序表达式 sortDirection Ascending/Descending |
UpdateRow |
使用行的字段值更新位于指定行索引位置的记录 |
GridView常用事件:
RowCommand |
在 GridView 控件中单击某个按钮时发生.此事件通常用于在该控件中单击某个按钮时执行某项任务. |
PageIndexChanging |
在单击页导航按钮时发生,但在 GridView 控件执行分页操作之前.此事件通常用于取消分页操作. |
PageIndexChanged |
在单击页导航按钮时发生,但在 GridView 控件执行分页操作之后.此事件通常用于在用户定位到该控件中不同的页之后需要执行某项任务时. |
SelectedIndexChanging |
在单击 GridView 控件内某一行的 Select 按钮(其 CommandName 属性设置为“Select”的按钮)时发生,但在 GridView 控件执行选择操作之前.此事件通常用于取消选择操作. |
SelectedIndexChanged |
在单击 GridView 控件内某一行的 Select 按钮时发生,但在 GridView 控件执行选择操作之后.此事件通常用于在选择了该控件中的某行后执行某项任务. |
Sorting |
在单击某个用于对列进行排序的超链接时发生,但在 GridView 控件执行排序操作之前.此事件通常用于取消排序操作或执行自定义的排序例程. |
Sorted |
在单击某个用于对列进行排序的超链接时发生,但在 GridView 控件执行排序操作之后.此事件通常用于在用户单击对列进行排序的超链接之后执行某项任务. |
RowDataBound |
在 GridView 控件中的某个行被绑定到一个数据记录时发生.此事件通常用于在某个行被绑定到数据时修改该行的内容. |
RowCreated |
在 GridView 控件中创建新行时发生.此事件通常用于在创建某个行时修改该行的布局或外观. |
RowDeleting |
在单击 GridView 控件内某一行的 Delete 按钮(其 CommandName 属性设置为“Delete”的按钮)时发生,但在 GridView 控件从数据源删除记录之前.此事件通常用于取消删除操作. |
RowDeleted |
在单击 GridView 控件内某一行的 Delete 按钮时发生,但在 GridView 控件从数据源删除记录之后.此事件通常用于检查删除操作的结果. |
RowEditing |
在单击 GridView 控件内某一行的 Edit 按钮(其 CommandName 属性设置为“Edit”的按钮)时发生,但在 GridView 控件进入编辑模式之前.此事件通常用于取消编辑操作. |
RowCancelingEdit |
在单击 GridView 控件内某一行的 Cancel 按钮(其 CommandName 属性设置为“Cancel”的按钮)时发生,但在 GridView 控件退出编辑模式之前.此事件通常用于停止取消操作. |
RowUpdating |
在单击 GridView 控件内某一行的 Update 按钮(其 CommandName 属性设置为“Update”的按钮)时发生,但在 GridView 控件更新记录之前.此事件通常用于取消更新操作. |
RowUpdated |
在单击 GridView 控件内某一行的 Update 按钮时发生,但在 GridView 控件更新记录之后.此事件通常用来检查更新操作的结果. |
DataBound |
此事件继承自 BaseDataBoundControl 控件,在 GridView 控件完成到数据源的绑定后发生. |
DataBinding |
当服务器控件绑定到数据源时发生 |
CommandName属性值及说明:
Cancel |
取消编辑操作, 并将GridView控件返回为只读模式 |
Delete |
删除当前记录 |
Edit |
将当前记录至于编辑模式 |
Page |
执行分页操作, 将按钮的CommandArgument属性设置为First, last , Next, Prev 或页码, 以指定要执行的分页操作类型 |
Select |
选择当前记录 |
Sort |
对GridView控件进行排序 |
Update |
更新数据源中的当前记录 |
制定GridView控件的列:
对于GridView控件中的每一列由一个DataControlField对象表示, 默认情况下, AutoGenerateColumns属性被设置为True, 为数据源中的每一个字段创建一个AutoGeneratedFiled. 将AutoGenerateColumns属性设置为false时, 可以自定义数据绑定列. GridView控件共包含7中类型列:
BoundField(普通数据绑定列) |
将Data Source数据源的字段数据以文本方式显示 |
CheckBoxField(CheckBox字段) |
显示为CheckBox类型,通常用于布尔值True/False的显示 |
CommandField(命令数据绑定列) |
显示含有命令的Button按钮,包括了Select、Edit、Update、Delete命令按钮(DetailsView的CommandField才支持Insert命令), 通过设置字段的ButtonType属性可变更命令按钮的外观, 默认是Link样式.若要以图片形式显示编辑按钮外观, 一定要设置ButtonType的属性为Image |
ImageField(图片数据绑定列) |
在数据绑定控件中显示图像字段, 通常ImageField存储的是图片路径. |
ButtonField(按钮字段) |
在数据绑定控件中显示命令按钮。根据控件的不同,它可让您显示具有自定义按钮控件(例如添加/移除按钮)的数据行或数据列,按下时会引发RowCommand事件 CommandField(命令字段) |
HyperLinkField(超链接字段) |
将Data Source数据源字段数据显示成HyperLink超级链接,并可指定另外的NavigateUrl超链接 ImageField(图像字段)在数据绑定控件中显示图像字段 |
TemplateField(模板字段) |
允许以模板形式自定义数据绑定列的内容.常用模板如下:
|
当GridView控件中显示的数据很多时, 单击GridView控件中的某一个按钮, 页面就会刷新, 刷新后页面回到网页的底部, 然后必须查找原来的位置, 这样造成了不必要的麻烦, 为了解决这个问题, 在ASP.NET2.0中添加了MaintainScrollPositionOnPostback="true"
属性, 他的作用就是在网页刷新后仍维持原位.
<%@ Page Title="主页" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="_Default" Debug="true" MaintainScrollPositionOnPostback="true" %>
示例代码:
1 protected void Page_Load(object sender, EventArgs e) 2 3 { 4 5 if (!IsPostBack) 6 7 GridViewBind(); 8 9 } 10 11 public SqlConnection GetCon() 12 13 { 14 15 //实例化SqlConnection对象 16 17 SqlConnection sqlCon = new SqlConnection(); 18 19 //实例化SqlConnection对象连接数据库的字符串 20 21 sqlCon.ConnectionString = "server=.\\LG;uid=sa;pwd=;database=TYW"; 22 23 return sqlCon; 24 25 } 26 27 public void GridViewBind() 28 29 { 30 31 SqlConnection myConn = GetCon(); 32 33 //定义SQL语句 34 35 string SqlStr = "select * from sysUser"; 36 37 //实例化SqlDataAdapter对象 38 39 SqlDataAdapter da = new SqlDataAdapter(SqlStr, myConn); 40 41 //实例化数据集DataSet 42 43 DataSet ds = new DataSet(); 44 45 da.Fill(ds, "sysUser"); 46 47 //绑定DataList控件 48 49 GridView1.DataSource = ds;//设置数据源,用于填充控件中的项的值列表 50 51 GridView1.DataKeyNames = new string[] { "userID" }; 52 53 GridView1.DataBind();//将控件及其所有子控件绑定到指定的数据源 54 55 } 56 57 protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) 58 59 { 60 61 //设置GridView控件的编辑项的索引为选择的当前索引 62 63 GridView1.EditIndex = e.NewEditIndex; 64 65 //数据绑定 66 67 GridViewBind(); 68 69 } 70 71 protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) 72 73 { 74 75 //设置GridView控件的编辑项的索引为-1,即取消编辑 76 77 GridView1.EditIndex = -1; 78 79 //数据绑定 80 81 GridViewBind(); 82 83 } 84 85 protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) 86 87 { 88 89 //取得编辑行的关键字段的值 90 91 string stuID = GridView1.DataKeys[e.RowIndex].Value.ToString(); 92 93 //取得文本框中输入的内容 94 95 string stuName = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString(); 96 97 //string stuSex = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString(); 98 99 //string stuHobby = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString(); 100 101 string sqlStr = "update sysUser set Userame='" + stuName + "' where userID=" + stuID; 102 103 SqlConnection myConn = GetCon(); 104 105 myConn.Open(); 106 107 SqlCommand myCmd = new SqlCommand(sqlStr, myConn); 108 109 myCmd.ExecuteNonQuery(); 110 111 myCmd.Dispose(); 112 113 myConn.Close(); 114 115 GridView1.EditIndex = -1; 116 117 GridViewBind(); 118 119 }