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

15 篇文章 0 订阅

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>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值