今天看到论坛上有人提问怎样自定义gridview的编辑和删除列,来操作数据库,这里写了一个DEMO.供大家参考 using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; using System.Data.SqlClient; namespace WebApplication1 { public partial class WebForm2 : System.Web.UI.Page { string strCon = "Data Source=.;Initial Catalog=OPEN_EXAM_SITEHR;User ID=sa;Password=sa"; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { BindGridView(); } } private void BindGridView() { SqlConnection con = new SqlConnection(strCon); con.Open(); SqlCommand cmd = new SqlCommand("select * from examinee",con); SqlDataAdapter adp = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); adp.Fill(ds); this.GridView1.DataSource=ds.Tables[0]; this.GridView1.DataBind(); con.Close(); } protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) { GridView1.EditIndex = e.NewEditIndex; BindGridView(); } protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { GridView1.EditIndex = -1; BindGridView(); } protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) { string id = GridView1.DataKeys[e.RowIndex].Values[0].ToString(); string pwd = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBox1")).Text; string name = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBox2")).Text; string strUpdate = "UPDATE EXaminee set pwd='"+pwd+"',examineename='"+name+"' where examineeid="+id; SqlConnection con = new SqlConnection(strCon); con.Open(); SqlCommand cmd = new SqlCommand(strUpdate,con); cmd.ExecuteNonQuery(); con.Close(); GridView1.EditIndex = -1; BindGridView(); } protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) { string id = GridView1.DataKeys[e.RowIndex].Values[0].ToString(); string strDel = "DELETE FROM EXAMINEE where examineeid="+id; SqlConnection con = new SqlConnection(strCon); con.Open(); SqlCommand cmd = new SqlCommand(strDel, con); cmd.ExecuteNonQuery(); con.Close(); BindGridView(); } } } <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="WebApplication1.WebForm2" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>无标题页</title> </head> <body> <form id="form1" runat="server"> <div> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" onrowediting="GridView1_RowEditing" DataKeyNames="examineeid" onrowcancelingedit="GridView1_RowCancelingEdit" onrowupdating="GridView1_RowUpdating" onrowdeleting="GridView1_RowDeleting"> <Columns> <asp:TemplateField HeaderText="学号"> <ItemTemplate> <%#DataBinder.Eval(Container.DataItem,"pwd") %> </ItemTemplate> <EditItemTemplate> <asp:TextBox ID="TextBox1" runat="server" Text=<%#DataBinder.Eval(Container.DataItem,"pwd")%>> </asp:TextBox> </EditItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="名称"> <ItemTemplate> <%#DataBinder.Eval(Container.DataItem,"examineename") %> </ItemTemplate> <EditItemTemplate> <asp:TextBox ID="TextBox2" runat="server" Text=<%#DataBinder.Eval(Container.DataItem,"examineename") %>> </asp:TextBox> </EditItemTemplate> </asp:TemplateField> <asp:TemplateField> <ItemTemplate> <asp:Button ID="Button2" runat="server" Text="编辑" CommandName="Edit" /> <asp:Button ID="Button4" runat="server" Text="删除" CommandName="Delete" /> </ItemTemplate> <EditItemTemplate> <asp:Button ID="Button1" runat="server" Text="更新" CommandName="Update" /> <asp:Button ID="Button3" runat="server" Text="取消" CommandName="Cancel"/> </EditItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> <asp:Button ID="Button2" runat="server" Text="Button" /> </div> </form> </body> </html>