您的位置 >>> 星想互联 >>>  >>> ASP.NET
ASP.NET中的GridView控件
点击数:4487  发布时间2013-02-20 22:32:17
一. 数据绑定简介 
数据绑定就是将数据源中的数据显示到数据服务控件中。
数据源可以是数据库表、数组、集合等。
数据服务控件是专门用于在页面上显示数据的一种控件。我们将主要介绍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(); 
来源:星想互联