首页 > 代码库 > 027. asp.net中数据绑定控件之 GridView控件

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(模板字段) 

允许以模板形式自定义数据绑定列的内容.常用模板如下:

  1. ItemTemplate: 显示每一条数据的模板
  2. AlternatingItemTemplate: 使奇数条数据及偶数条数据以不同的模板显示, 该模板与ItemTemplate结合可产生两个模板交错显示的效果
  3. EditItemTemplate:进入编辑模式时所使用的数据编辑模板, 对于EditItemTemplate用户可以自定义编辑界面
  4. HeaderTemplate: 最上方的标头(标题)

 

 

当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     }

 

 

 

027. asp.net中数据绑定控件之 GridView控件