GridView控件的学习和使用
一. 数据绑定简介
数据绑定就是将数据源中的数据显示到数据服务控件中。
数据源可以是数据库表、数组、集合等。
数据服务控件是专门用于在页面上显示数据的一种控件。我们将主要介绍GridView控件、DataList控件、Repeater控件。
所有的数据绑定都通过DataBind()函数来实现。在实现数据绑定的时候,首先要指明数据源,然后再使用DataBind()函数。
GridView1.DataSource = dataset;
GridView1.DataBind();
二. GridView控件简介
GridView控件是Asp.Net2003中DataGrid控件的升级版本,它提供了比DataGrid更强大的功能,同时比DataGrid更加易用。
GridView控件是一个功能强大的控件。它可以使用数据绑定技术,在数据初始化的时候绑定一个数据源,从而显示数据。除了能够显示数据外,还可以实现编辑、排序和分页等功能,而这些功能的实现有时可以不写代码或写很少的代码。
三. GridView控件的属性
GridView控件的属性很多,总体上可以分为分页、数据、行为、样式等几类。
1)分页:主要是设置是否分页、分页标签的显示样式、页的大小等。
2)数据:设置控件的数据源。
3)行为:主要进行一些功能性的设置,如:是否排序、是否自动产生列、是否自动产生选择删除修改按钮等。
4)样式:设置GridView控件的外观,包括选择行的样式、用于交替的行的样式、编辑行的样式、分页界面样式、脚注样式、标头样式等。
具体属性的解释参见示例演示
四 . GridView控件的事件
GridView控件的事件非常丰富。当在GridView控件上操作时就会产生相应的事件。要实现的功能代码就写在相应的事件中。
GridView控件的常用事件主要有:
1)PageIndexChanging:当前索引正在改变时触发。
2)RowCancelingEdit:当放弃修改数据时触发。
3)RowDeleting:当删除数据时触发。
4)RowEditing:当要编辑数据时触发。
5)RowUpdating:当保存修改的数据时触发。
6)SeletedIndexChanging:在选择新行时触发。
7)Sorting:当操作排序列进行排序时触发。
8)RowCreated:在创建行时触发。
五 . GridView控件的模板列
GridView控件通过设置AutoGenerateColumns属性为true实现自动创建列,同时也可以通过模板列创建自己的列。GridView控件中主要有如下几种类型的模板列。
1)BoundField:普通绑定列。
2)CheckBoxField:复选框绑定列。
3)HyperLinkField:超连接绑定列。
4)ImageField:图片绑定列。
5)ButtonField:按钮绑定列。
6)CommandField:命令绑定列。
7)TemplateField:自定义模板绑定列。
六 . GridView控件的使用举例
object sender, EventArgs e, GridView gv
6.1使用Command、DataReader和DataSet两种方法实现数据绑定
方法1:使用Command和DataReader
string sqlStr = "select * from Student";
sqlCmd = new SqlCommand(sqlStr, con);
reader = sqlCmd.ExecuteReader();
gv.DataSource = reader;
gv.DataBind();
方法2:使用DataSet数据集
SqlDataAdapter sqlDa;
string sqlStr = "select * from Student";
sqlCmd = new SqlCommand(sqlStr, con);
ds = new DataSet();
sqlDa = new SqlDataAdapter();
sqlDa.SelectCommand = sqlCmd;
sqlDa.Fill(ds, "student");
//return ds.Tables[“student”].DefaultView;
gv.DataSource = ds.Tables["student"].DefaultView;
gv.DataBind();
6.2实现分页显示功能
步骤:
1.设置AllowPaging为true;
2.在PagIndexChanging事件中添加如下代码:
gv.PageIndex = e.NewPageIndex;
gv.DataSource=getView();
gv.DataBind();
其中getView()函数用于得到一个数据源。实现方法参见上一页。
6.3实现排序功能
步骤:
1)设置AllowSorting为true;
2)在Sorting事件中添加如下代码:
DataView dv;
dv=getView();
dv.Sort = e.SortExpression;
gv.DataSource =dv;
gv.DataBind();
其中getView()函数用于得到一个数据源。同前面功能相同。
6.4数据操作功能——包括选定、删除、修改
前提:针对一行列来进行
1.数据行的选定
创建一个“选定”列,在SelectedIndexChanging事件中添加如下代码,可以选定一行。
GridView1.SelectedIndex = e.NewSelectedIndex;
GridView1.DataBind();
2.数据的删除
创建一个删除列,在RowDeleting事件中添加如下代码,可以删除一列。
string XueHao = gv.Rows[e.RowIndex].Cells[0].Text;
SqlCommand delCmd = new SqlCommand("delete student where XueHao='" + XueHao + "'",con);
delCmd.ExecuteNonQuery();
gv.DataBind(); //实现数据绑定的函数
3.数据的修改
创建一个“编辑、更新、取消”列,在RowEditing事件中添加如下代码,将一行变成编辑状态。
gv.EditIndex = e.NewEditIndex;
gv.DataBind();//实现数据绑定函数在RowCancelingEdit事件中添加如下代码,将一行取消编辑。
gv.EditIndex = -1;
gv.DataBind();//实现数据绑定函数在RowUpdating事件中添加如下代码,实现数据的更新和保存。
updateCmd = new SqlCommand("update student set XingMing=@XingMing where XueHao=@XueHao", con);
SqlParameter prmUpdateXueHao = new SqlParameter("@XueHao", SqlDbType.VarChar, 5, "XueHao");
updateCmd.Parameters.Add(prmUpdateXueHao);
SqlParameter prmUpdateXingMing = new SqlParameter("@XingMing", SqlDbType.VarChar, 10, "XingMing");
updateCmd.Parameters.Add(prmUpdateXingMing);
prmUpdateXueHao.Direction=ParameterDirection.Input;
prmUpdateXueHao.Value = gv.Rows[e.RowIndex].Cells[0].Text;
prmUpdateXingMing.Direction = ParameterDirection.Input;
prmUpdateXingMing.Value = ((TextBox)gv.Rows[e.RowIndex].Cells[1].Controls[0]).Text;
updateCmd.ExecuteNonQuery();
gv.EditIndex = -1;
gvDataBind();