自强不息,厚德载物!身心自在,道法自然!


初始ASP.NET数据控件GridView

使用GridView控件绑定数据源

     GridView控件个人认为就是数据表格控件,它以表格的形式显示数据源中的数据。每列表示一个字段,每行表示一条记录。

      GridView控件支持在页面有一下功能:

  1. 绑定至数据源控件。
  2. 内置排序功能。
  3. 内置分页功能。
  4. 内置行选择功能。
  5. 以编程的方式访问GridView对象模型以动态设置属性,处理事件等。
  6. 多个键字段。
  7. 用于超连接列的多个数据字段。
  8. 可通过主题和样式自定义外观。

绑定GridView控件到数据源的有两种方法:通过配置数据源绑定和通过代码绑定。

1.通过配置数据源绑定GridView控件

   下面演示通过SqlDataSource控件配置数据源,并连接数据库,然后使用GridView控件绑定SqlDataSource数据源。

数据库表内容如:

 

新建一个网站,建立一个Inde.aspx页面。在工具箱->数据分类下面拽一个GridView控件和一个SqlDataSource控件出来。如下图:

 

接下来配置SqlDataScource控件,

接下来就要配置GridView控件了,在GridView控制中选择我们的数据源SqlDataSource控件即可,如下图

配置完成后,运行下我们的效果看下,如下图

2.通过代码绑定GridView控件

同样上面的代码可以用下面的代码完成。加载事件时写法:

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace DataShowApplication
{
    public partial class Index : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //创建字符串连接
            SqlConnection sqlconn = new SqlConnection ("Data Source=.\\CENA;Initial Catalog=Asp.net;Persist Security Info=True;User ID=sa;Password=123456");

            SqlDataAdapter sqlda = new SqlDataAdapter("select * from DemoStu", sqlconn);
            DataSet ds = new DataSet ();
            sqlda.Fill(ds);
            this.Data_GridView.DataSource = ds;
            this.Data_GridView.DataBind();
        }
    }
}

 自定义GridView控件的列

  GridView控件中的每一列有一个DataControlField对象。

  1. BoundField列:默认的数据绑定类型,通常用于显示普通文本。
  2. CheckBoxField列:显示布尔类型的数据。绑定数据为true时,复选框数据绑定列为选中状态;绑定数据为false时,则显示未选中状态。
  3. CommandField列:显示用来执行选择,编辑或删除操作的预定义命令按钮。
  4. ImageField列:在GridView控件所在的表格中显示图片列。
  5. HyperLinkField列:允许将所绑定的数据以超链接的形式显示出来。开发人员可自定义绑定超连接的显示文字,超链接的URL以及打开窗口的方式等。
  6. ButtonField列:为GridView控件创建命令按钮,开发人员可以通过按钮来操作其所在行的数据。
  7. TemplateField列:允许以模版式自定义数据绑定列的内容。

 实验如何在在GridView控件中添加BoundField列,从而进行数据绑定实例如下:

添加一个Index.aspx页面,添加一个GridView控件和一个SqlDataSoure控件。如下图:

要对GridView控件经行自定义列,要先取消GridView自动产生字段的功能。把GridView的AutoGeneraterColums属性设置为false就可以了。

然后设置SqlDataSource控件配置数据源,并将SqlDataSource控件指定给GridView控件的DataSourceID属性。如下图:

然后编辑GridView控件,如下图:

看下运行结果,如下图:

使用GridView控件分页显示数据

   GridView控件有一个内置的分页控件,可以支持基本的分页功能。启用分页需要设置AllowPaging,PageSize属性。如下图:

然后需要写一个GridView控件的PageIndexChanging事件,写法如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace DataShowApplication
{
    public partial class IndexO : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        protected void GridViewOne_PageIndexChanging(object sender, GridViewPageEventArgs e) 
        {
            //获取当前分页的索引值
            this.GridViewOne.PageIndex = e.NewPageIndex;
            this.GridViewOne.DataBind();
        }
    }
}
View Code

写完运行如下结果:

 GridView在编程中的一点高级应用

   GridView中其实还包含了一族好玩的东西,就是RowEdtiting,RowUpdating,RowCancelingEdit事件,这些事件可以帮助我们实现编辑,更新和取消操作,还有一个RowDeleting事件,可以实现删除某条记录的操作。下面可以演示过程:

1.新建一个IndexTow.aspx页面放一个GridView控件进去,然后利用GridView控件的CommandField列的选择,编辑,取消和删除按钮。

现在开始我们的操作,先绑定数据。

当然加载的时候我们就应该绑定上数据,绑定数据代码如下:

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace DataShowApplication
{
    public partial class IndexTwo : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                //调用绑定方法
                this.BindData();
            }
        }
        //写一个绑定数据的方法
        private void BindData()
        {
            //老一套连接字符串先走起
            string strconn = @"Data Source=.\CENA;Initial Catalog=Asp.net;Persist Security Info=True;User ID=sa;Password=123456";
            //写SQL  有SQL语句了才能有数据(其实标准的SQL语句基本都是大写的看大牛一般都那样写)
            string sqlquery = "select * from DemoStu";
            //准备好了就要创建数据库连接对象
            SqlConnection connection = new SqlConnection(strconn);
            //然后在搞一个数据适配器
            SqlDataAdapter da = new SqlDataAdapter(sqlquery, strconn);
            //继续创建数据集合
            DataSet ds = new DataSet();
            //填充数据集
            da.Fill(ds);
            //设置咱GridView控件数据源为创建的数据集ds
            this.GridViewTwo.DataSource = ds;
            //将数据库表中的主键字段放入GridView控件的DataKeyNames属性中
            this.GridViewTwo.DataKeyNames = new string[] { "ID" };
            //绑定数据库中的数据
            this.GridViewTwo.DataBind();
        }
    }
}

 绑定好数据后,我们运行结果如下:

然后我们继续完善,先来搞编辑,当我们点击编辑时,应该触发GridView控件的RowEditing事件,这时我们的编辑项索引设置应当为当前选择的项的索引,然后从新绑定数据。代码如下:

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

namespace DataShowApplication
{
    public partial class IndexTwo : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                //调用绑定方法
                this.BindData();
            }
        }
        //写一个绑定数据的方法
        private void BindData()
        {
            //老一套连接字符串先走起
            string strconn = @"Data Source=.\CENA;Initial Catalog=Asp.net;Persist Security Info=True;User ID=sa;Password=123456";
            //写SQL  有SQL语句了才能有数据(其实标准的SQL语句基本都是大写的看大牛一般都那样写)
            string sqlquery = "select * from DemoStu";
            //准备好了就要创建数据库连接对象
            SqlConnection connection = new SqlConnection(strconn);
            //然后在搞一个数据适配器
            SqlDataAdapter da = new SqlDataAdapter(sqlquery, strconn);
            //继续创建数据集合
            DataSet ds = new DataSet();
            //填充数据集
            da.Fill(ds);
            //设置咱GridView控件数据源为创建的数据集ds
            this.GridViewTwo.DataSource = ds;
            //将数据库表中的主键字段放入GridView控件的DataKeyNames属性中
            this.GridViewTwo.DataKeyNames = new string[] { "ID" };
            //绑定数据库中的数据
            this.GridViewTwo.DataBind();
        }

        protected void RowEditing(object sender, GridViewEditEventArgs e) 
        {
            //设置索引值
            this.GridViewTwo.EditIndex = e.NewEditIndex;
            this.BindData();
        }
        protected void GridViewTwo_RowUpdating(object sender, GridViewUpdatedEventArgs e)
        {
            //取得编辑行的关键字段的值
            string ID = this.GridViewTwo.DataKeys[e.RowIndex].Value.ToString();
            //取得文本框中输入的内容
            string Name = ((TextBox)(this.GridViewTwo.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim();
            string Price = ((TextBox)(this.GridViewTwo.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString().Trim();
            string time = ((TextBox)(this.GridViewTwo.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString().Trim();
            //定义更新操作的SQL语句
            string update_sql = "update DemoStu set Name='" + Name + "',Price='" + Price + "',Time='" + time + "' where id='" + ID + "'";
            bool update = ExceSQL(update_sql);//调用ExceSQL执行更新操作
            if (update)
            {
                Response.Write("<script language=javascript>alert('修改成功!')</script>");
                //设置GridView控件的编辑项的索引为-1,即取消编辑
                this.GridViewTwo.EditIndex = -1;
                BindData();
            }
            else
            {
                Response.Write("<script language=javascript>alert('修改失败!');</script>");
            }
        }

        protected void GridViewTwo_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) 
        {
            //设置GridView控件的编辑项的索引为-1,即取消编辑
            this.GridViewTwo.EditIndex = -1;
            BindData();
        }

        protected void GridViewTwo_RowDeleting(object sender, GridViewDeletedEventArgs e)
        {
            string delete_sql = "delete from DemoStu where id='" + this.GridViewTwo.DataKeys[e.RowIndex].Value.ToString() + "'";
            bool delete = ExceSQL(delete_sql);//调用ExceSQL执行删除操作
            if (delete)
            {
                Response.Write("<script language=javascript>alert('删除成功!')</script>");
                BindData();//调用自定义方法重新绑定控件中数据
            }
            else
            {
                Response.Write("<script language=javascript>alert('删除失败!')</script>");
            }
        }

        /// <summary>
        /// 执行SQL语句的方法
        /// </summary>
        /// <param name="update_sql"></param>
        /// <returns></returns>
        private bool ExceSQL(string update_sql)
        {
            //定义数据库连接字符串
            string strCon = @"Data Source=.\CENA;Initial Catalog=Asp.net;Persist Security Info=True;User ID=sa;Password=123456";
            //创建数据库连接对象
            SqlConnection sqlcon = new SqlConnection(strCon);
            SqlCommand sqlcom = new SqlCommand(update_sql, sqlcon);
            try
            {
                if (sqlcon.State == System.Data.ConnectionState.Closed)//判断数据库是否为连连状态
                { sqlcon.Open(); }
                sqlcom.ExecuteNonQuery();//执行SQL语句
                return true;
            }
            catch
            {
                return false;
            }
            finally
            {
                sqlcon.Close();//关闭数据库连接
            }
        }


    }
}
View Code

关于GridView就简单的介绍到这里,跟我一样的小虾可以自己动手去实验一下。。。。。

后面在继续初始学习我们的另外2个常用数据控件分别是DataList控件,ListView控件。

posted @ 2014-04-20 21:50  辉太  阅读(1903)  评论(1编辑  收藏  举报

路漫漫其修远兮,吾将上下而求索!