Gridview 重要的事件 和 重要的属性

来源:互联网 发布:java代码混淆工具下载 编辑:程序博客网 时间:2024/06/01 09:07

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" onclick="Button1_Click" Text="Button" /></asp:Content>