Vs2005GridView中的CommandField

    技术2022-05-11  72

    在GridView中经常要用到比如删除,选择,编辑等命令,下面我就来详细说明各个功能的实现:

    首先加入一个GridView控件,设置其属性:

    1.在Columns中添加CommandField列如:Delete;Select;Edit,Update,Cancel三列.

    2.DataKeyNames添加需要绑定表的主键(最好选择它),以便在后面的程序中使用该值.

    其它的属性就先不设置了,因为已经够用了.哈哈...

    现在就来具体实现吧.

    首先,我使用SQL Server2000中的NorthWind数据库.先写一个绑定数据的函数

     public void BindData()             //用来绑定数据到GridView    {        SqlConnection con = DB.createConnection();        con.Open();        SqlDataAdapter ada = new SqlDataAdapter("select employeeID,LastName,FirstName from Employees", con);        DataSet ds = new DataSet();        ada.Fill(ds);        this.GridView1.DataSource = ds;        this.GridView1.DataBind();    }

    现在写编辑按钮的事件,当然要先在GridView中添加RowEditing事件:

    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)    {        this.GridView1.EditIndex = e.NewEditIndex;                     BindData();    }

    页面现在可以编辑了,编辑之后保存到数据库里面,这一段比较关键主要是要获取被编辑行的主键值,以及要获得更新的值.添加RowUpdating事件:

    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)    {        int i = this.GridView1.EditIndex; //e.RowIndex是当前被选中的行号.        string firstName = ((TextBox)(GridView1.Rows[i].Cells[5].Controls[0])).Text.ToString();          DataKey key = this.GridView1.DataKeys[e.RowIndex];   //key是个数组,前提是要在属性DataKeyNames中设置数据库字段,通常是选主键.             int id = int.Parse(key[0].ToString());//key[]就可以取得字段对应的值                        /*         * 连接数据库,提交更新的资料        */        SqlConnection uptCon = DB.createConnection();        uptCon.Open();        SqlCommand cmd = new SqlCommand("update employees set FirstName='" + firstName + "' where employeeID=" + id,uptCon);        cmd.ExecuteNonQuery();        Response.Write("<script>alert('更新成功!')</script>");

            //回到编辑页面,准备下一次的修改        this.GridView1.EditIndex = -1;        BindData();    }

    随便选择一行进行编辑,然后点击更新,现在数据就可以更新了哦,哈哈...成功了!

    最后,如果我们不想更新了呢?此时就要Cancel了,同样添加RowCancelingEdit事件

    protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)    {        this.GridView1.EditIndex = -1;        BindData();    }   

    到此,关于Edit,Update,Cancel事件已经全部实现了,如果要实现Delete就添加RowDeleting事件,代码与Update事件类似,主要的是获得选定行的主键,因为有了主键才方便操作数据库.

    我有一点不明白的是RowUpdated事件是什么时候触发的?与RowUpdating有什么关联吗?上面的例子没有用它也实现了功能(井底之见),我学到了再写它的作用.

     

     

     


    最新回复(0)