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.设置AllowPagingtrue;
      2.在PagIndexChanging事件中添加如下代码:
        gv.PageIndex = e.NewPageIndex;
      gv.DataSource=getView();
        gv.DataBind();
      其中getView()函数用于得到一个数据源。实现方法参见上一页。
6.3实现排序功能
    步骤:
      1)设置AllowSortingtrue;
      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();  //实现数据绑定的函数
    gridview不显示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();

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。