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();

posted @ 2011-05-28 00:32  天南星客  阅读(14925)  评论(2编辑  收藏  举报