OnRowEditing 点编辑产生的事件
OnRowDeleting 点删除产生的事件
OnRowUpdating 点更新产生的事件
OnRowCancelingEdit 点取消产生的事件
OnSelectedIndexChanging 点选择后产生的事件.
OnPageIndexChanging 点击翻页后产生的事件.
前面的三个事件都与主键有关.于是在绑定数据源时, 要注意把标明主键是哪个字段 使用的语句是:GridView1.DataKeyNames=new string[] {"主键名"};
有时把GridView1.DataKeyNames=new string[] {"主键名"}; 放在onrowediting事件函数中,发现在更新也能正常使用。原因,在更新之前使用了onrowediting,所以对于update来说它也是有主键的。不过对于delete来说,可就没有这么好了。
如果在没有发生onrowediting事件前点了删除,根本就完成不了删除任务,因为它找不到主键.
对于onrowediting事件来说,只要用一句GridView1.EditIndex=e.NewEditIndex即可以产生编辑模式。
对于onrowupdating事件来说,可以使用GridView1.Rows[e.RowIndex].Cells[].controls[]来取得返回的修改值。
修改完成后,使用GridView1.EditIndex=-1;就可以取消编辑状态.
关于onselectindexchanging事件是在按"选择"后产生的。它与onrowediting事件有些相似.editing中用e.neweditindex来表示当前选中的行。
而selectindexchanging则是使用e.newselectedindex来表示.
对于OnPageIndexChanging有例子如下:
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
bind();
}
一个增删改查的实例:
后台
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
namespace Test
{
public partial class _Default : System.Web.UI.Page
{
SqlConnection sqlcon;
SqlCommand sqlcom;
string strCon = "Data Source=FZ-PC;Initial Catalog=Test;User ID=sa;Password=sa";
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
bind();
}
}
//绑定
public void bind()
{
string sqlstr = "select * from 表";
sqlcon = new SqlConnection(strCon);
SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon);
DataSet Dataset = new DataSet();
sqlcon.Open();
myda.Fill(Dataset, "表");
GridView1.DataSource = Dataset;
GridView1.DataKeyNames = new string[] { "id" };//标明主键字段
GridView1.DataBind();
sqlcon.Close();
}
//删除
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
string sqlstr = "delete from 表 where id='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";
sqlcon = new SqlConnection(strCon);
sqlcom = new SqlCommand(sqlstr, sqlcon);
sqlcon.Open();
sqlcom.ExecuteNonQuery();
sqlcon.Close();
bind();
}
//编辑
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;//浏览模式-->编辑模式
bind();
}
//更新
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
sqlcon = new SqlConnection(strCon);
string sqlstr =
"update 表 set 身份证号码='" + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim() +
"',姓名='"+ ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString().Trim() +
"',员工性别='"+ ((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim() +
"',家庭住址='" + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString().Trim() +
"' where id='"+ GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";
sqlcom = new SqlCommand(sqlstr, sqlcon);
sqlcon.Open();
sqlcom.ExecuteNonQuery();
sqlcon.Close();
GridView1.EditIndex = -1;//编辑模式-->浏览模式
bind();
}
//取消
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
GridView1.EditIndex = -1;//编辑模式-->浏览模式
bind();
}
//添加
protected void Button1_Click(object sender, EventArgs e)
{
string sqlstr = @"INSERT INTO [Test].[dbo].[表]
([身份证号码],[姓名],[员工性别],[家庭住址])
VALUES
(@id,@xm,@xb,@ad)";
SqlParameter[] spas =
{
new SqlParameter("@id",this.TextBox1.Text),
new SqlParameter("@xm",this.TextBox2.Text),
new SqlParameter("@xb",this.TextBox3.Text),
new SqlParameter("@ad",this.TextBox4.Text ),
};
sqlcon = new SqlConnection(strCon);
sqlcom = new SqlCommand(sqlstr, sqlcon);
sqlcom.Parameters.AddRange(spas);
sqlcon.Open();
sqlcom.ExecuteNonQuery();
sqlcon.Close();
bind();
}
}
}
前台
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<asp:GridView ID="GridView1" runat="server" ForeColor="#333333" GridLines="None" AutoGenerateColumns="false"
OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing"
OnRowUpdating="GridView1_RowUpdating" OnRowCancelingEdit="GridView1_RowCancelingEdit">
<Columns>
<asp:BoundField DataField="id" HeaderText="用户ID" ReadOnly="True" />
<asp:BoundField DataField="身份证号码" HeaderText="身份证号码" />
<asp:BoundField DataField="姓名" HeaderText="姓名" />
<asp:BoundField DataField="员工性别" HeaderText="员工性别" />
<asp:BoundField DataField="家庭住址" HeaderText="家庭住址" />
<asp:CommandField HeaderText="选择" ShowSelectButton="True" />
<asp:CommandField HeaderText="编辑" ShowEditButton="True" />
<asp:CommandField HeaderText="删除" ShowDeleteButton="True" />
</Columns>
<RowStyle ForeColor="#000066" />
<FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="red" />
<SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
<HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
</asp:GridView>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<br />
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<br />
<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" οnclick="Button1_Click" Text="Button" />
</asp:Content>