GridVIew控件选中、编辑、取消、删除数据项

来源:互联网 发布:cr什么意思网络用语 编辑:程序博客网 时间:2024/05/04 06:27

最近研究了一下GridVIew控件的用法,现总结如下:

       GridVIew控件主要用来显示表格数据。


说明:因为连接SQL Server数据库,因此在命名控件中添加 using System.Data.SqlClient;


一 GridVIew控件分页绑定数据

1、在启用分页机制前需要设置

              AllowPaging属性为true,表示允许分页;PageSize属性设置值(如5),表示允许每页最多显示5条数据。

然后在Page_Load事件中,对页面进行初始化,将数据表中数据绑定到GridVIew控件中。代码如下:

 protected void Page_Load(object sender, EventArgs e)
    {
        string strCon = @"server=TRIMPS-WZF-PC\SQL2005; database=db_09; uid=sa; pwd= ";  //定义连接数据库的字符串
        string sqlStr = "select * from tb_user";   //定义数据库操作SQL语句
        SqlConnection con = new SqlConnection(strCon);    //创建数据库连接对象
        SqlDataAdapter da = new SqlDataAdapter(sqlStr, con);  //创建数据适配器
        DataSet ds = new DataSet();    //创建数据集
        da.Fill(ds);      //填充数据集


        //设置GridView控件的数据源为创建的数据集ds
        GridView1.DataSource = ds;
        //将数据库表中的主键字段放入GridVIew控件的DataKeyNames属性中
        GridView1.DataKeyNames = new string[] { "ID" };
        GridView1.DataBind();   //绑定数据库中的数据
    }


运行程序后如图:


但是这时候点击“2”,会出现

GridView“GridView1”激发了未处理的事件“PageIndexChanging”。

因此还要添加PageIndexChanging事件。代码如下:

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView1.PageIndex = e.NewPageIndex;  //获取当前分页的索引值
        GridView1.DataBind();  //重新绑定数据
    }

说明:GridView控件启动分页功能,假设每页显示5条数据,那么第二页的第一条数据的PageIndex是0,而非5.

         

二 以编程方式实现选中、编辑、删除GridView数据项

首先拖动一个GridView控件到页面中,点击GridView控件右上角的小黑三角会出现“GridView任务”点击“添加新列”,本例中数据字段选择了默认,输入页眉文本和数据字段,本例中添加了“用户ID”“姓名”“性别”“年龄”“地址”新列。然后点击GridView任务中的编辑列,在选定字段中可以调整列的先后位置,在可用字段中选择“CommandField”点击添加,则添加到选定字段中,然后点击CommandField,在右边的CommandField属性中设置属性。本例中在“行为“中设置ShowEditButton(编辑)、ShowDeleteButton(删除)的属性为true。由于GridView控件的自动生成字段的序列不会读到,因此把勾选去掉。如图所示:

 protected void Page_Load(object sender, EventArgs e)
    {
        //在Page_Load中自定义一个方法BindData(),主要讲查询结果绑定在GridView控件上
        if (!IsPostBack)
        {
            BindData();   //调用自定义方法绑定数据到控件
        }
    }


    //自定义一个方法BindData(),主要讲查询结果绑定在GridView控件上
    public void BindData()
    {
        string strCon = @"server=TRIMPS-WZF-PC\SQL2005 ; database=db_09; uid=sa; pwd= ";  //定义数据库连接字符串
        string sqlstr = "select * from tb_user";  //定义数据库查询SQL语句
        SqlConnection con = new SqlConnection(strCon);  //创建数据库的连接对象
        SqlDataAdapter da = new SqlDataAdapter(sqlstr, con);  //创建数据适配器
        DataSet ds = new DataSet();  //创建数据集
        da.Fill(ds);   //填充数据集


        GridView1.DataSource = ds;  //设置GridView控件的数据源为创建的数据集ds
        GridView1.DataKeyNames = new string[] { "ID" };  //将数据库表中的主键字段放入GridView控件的DataKeyNames属性中
        GridView1.DataBind();   //绑定数据库中的数据
    }
    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
    {
        GridView1.EditIndex = e.NewEditIndex;  //设置编辑项的索引
        BindData();
    }
    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        string id = GridView1.DataKeys[e.RowIndex].Value.ToString();  //取得编辑行的关键字段值


        //取得文本框中输入的内容
        string strName = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim();  //Rows[]行,Cellls[]列
        string strSex = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString().Trim();
        string strAge = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim();
        string strAdd = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString().Trim();


        //定义更新操作的SQL语句
        string updata_sql = "update tb_user set name='" + strName + "', sex='" + strSex + "', age='" + strAge + "', address='" + strAdd + "' where ID='" + id + "'";
        bool update = ExceSQL(updata_sql);  //调用自定义的ExceSQL方法执行数据库的更新操作


        if (update)
        {
            Response.Write("<script langeage=javascript>alert('修改成功!')</script>");
            //设置GridView空间的编辑项的索引为-1,即取消编辑
            GridView1.EditIndex = -1;
            BindData();  //调用自定义的绑定数据方法
        }
        else
        {
            Response.Write("<script langeage=javascript>alert('修改失败!')</script>"); 
        }
    }


    //自定义的执行数据库更新操作的方法
    bool ExceSQL(String strsql)
    {
        //定义连接数据库的字符串
        string strCon = @"server=TRIMPS-WZF-PC\SQL2005 ; database=db_09; uid=sa; pwd= ";


        SqlConnection con = new SqlConnection(strCon);  //创建数据库的连接对象
        SqlCommand com = new SqlCommand(strsql, con);   //创建数据库的执行对象


        try
        {
            if (con.State == System.Data.ConnectionState.Closed)  //判断数据库是否为连接状态
            {
                con.Open();     //若没有连接,则打开数据库
            }
            com.ExecuteNonQuery();   //执行SQL语句
            return true;  //执行SQL语句成功,返回true值
        }
        catch
        {
            return false;    //SQL语句执行失败,返回false值
        }
        finally
        {
            con.Close();  //关闭数据库
        }


    }
    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        string delete_sql = "delete from tb_user where ID='"+GridView1.DataKeys[e.RowIndex].Value.ToString()+"'";
        bool delete = ExceSQL(delete_sql);
        if (delete)
        {
            Response.Write("<script language=javascript>alter('删除成功!')</script>");
            BindData();
        }
        else 
        {
            Response.Write("<script language=javascript>alter('删除失败!')</script>");


        }
    }

0 0
原创粉丝点击