zoukankan      html  css  js  c++  java
  • 【ASP.NET】演绎GridView基本操作事件

    对于gridview学NET的同学再熟悉不过,但是其中功能事件是否能编码熟练实现?前不久看点博文,以及资料,综合自己的一些想法,汇总如下:


    数据库设计如下,以便更好理解:

    设计:

    实现:


    GridView无代码分页排序

    小实例:

     

     

     AllowSorting设为True,aspx代码中是AllowSorting="True";

    运行结果:




    GridView选中,编辑,取消,删除

    小实例:

    GridView.aspx

    View Code
     1  <asp:GridView ID="GridView1" runat="server" Height="138px" Width="1117px" 
     2         AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" 
     3         onpageindexchanging="GridView1_PageIndexChanging" 
     4         onrowcancelingedit="GridView1_RowCancelingEdit" 
     5         onrowdeleting="GridView1_RowDeleting" onrowediting="GridView1_RowEditing" 
     6         onrowupdating="GridView1_RowUpdating">
     7         <Columns>
     8 
     9             <asp:TemplateField HeaderText="身份证号" SortExpression="pid">
    10                 <ItemTemplate>
    11                     <asp:Label ID="Label1" runat="server" Text='<%# Bind("pid") %>'></asp:Label>
    12                 </ItemTemplate>
    13             </asp:TemplateField>
    14            <%-- <asp:BoundField DataField="pid" HeaderText="身份证号" SortExpression="pid" />--%>
    15             <asp:BoundField DataField="pname" HeaderText="姓名" SortExpression="pname" />
    16             <asp:BoundField DataField="psex" HeaderText="性别" SortExpression="psex" />
    17             <asp:BoundField DataField="padress" HeaderText="地址" SortExpression="padress" />
    18             <asp:BoundField DataField="pyoubiao" HeaderText="邮编"  SortExpression="pyoubiao" />
    19             <asp:BoundField DataField="pprice" HeaderText="工资起价" SortExpression="pprice" />
    20              <asp:CommandField HeaderText="选择" ShowSelectButton="True" />
    21             <asp:CommandField HeaderText="编辑" ShowEditButton="True" />
    22             <asp:CommandField HeaderText="删除" ShowDeleteButton="True" />
    23         </Columns>
    24         <EmptyDataRowStyle BackColor="Red" />
    25         <HeaderStyle BackColor="#0000CC" Font-Bold="True" ForeColor="White" />
    26         <PagerStyle BackColor="#864"  HorizontalAlign="Center" ForeColor="White"/>
    27     </asp:GridView>

     

    GridView.aspx.cs

    View Code
     //公有数据
            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["sqlcon"].ConnectionString);
            SqlCommand cmd;
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    bind(); //正常绑定
                }
            }
    
    
       /// <summary>
            /// 主题:绑定数据,查询显示个人信息
            /// 时间:2012年11月21日14:54:13
            /// 描述:通过简单的方法绑定,实现数据显示
            /// 作者:小伙
            /// </summary>
            public void bind()
            {
                //数据连接web.config中已配置的数据
                SqlDataAdapter da = new SqlDataAdapter("select top 5 * from person", con);//使用数据适配器内置查询,自动开闭数据库
                DataSet ds = new DataSet();//使用数据集,采取断开式访问数据
                da.Fill(ds, "person");
                GridView1.DataSource = ds;
                GridView1.DataKeyNames=new string[]{"pid"};//设置主键
                GridView1.DataBind();
            }
    
      //实现分页
            protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
            {
                GridView1.PageIndex = e.NewPageIndex;
                this.bind();
            }
            //删除
            protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
            {
                string sqlstr = "delete from person where pid='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";
                con.Open();
                cmd = new SqlCommand(sqlstr, con);
                cmd.ExecuteNonQuery();
                con.Close();
                bind();
    
    
            }
            //取消编辑
            protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
            {
                GridView1.EditIndex = -1;
                bind();
            }
            //编辑
            protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
            {
                GridView1.EditIndex = e.NewEditIndex;
                bind();
            }
    
    //更新
            protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
            {
                string sqlstr = "update person set pname='"
                    +((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim() + "',psex='"
                    +((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString().Trim()+"',padress='"
                    +((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim()+"',pyoubiao='"
                    +((TextBox)(GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString().Trim()+"',pprice='"
                    +((TextBox)(GridView1.Rows[e.RowIndex].Cells[5].Controls[0])).Text.ToString().Trim()+"' where pid='"
                    +GridView1.DataKeys[e.RowIndex].Value.ToString()+"'";
                cmd = new SqlCommand(sqlstr, con);
                con.Open();
                cmd.ExecuteNonQuery();
                con.Close();
                GridView1.EditIndex = -1;
                bind();
    
            }

     

    运行结果:

    运行初始页:

    点击编辑:

    更新后:

     

     




    GridView正反双向排序

    小实例:

     

    GridView.aspx

    View Code
     1  <asp:GridView ID="GridView1" runat="server" Height="138px" Width="1117px" 
     2         AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" 
     3         onpageindexchanging="GridView1_PageIndexChanging" 
     4         onrowcancelingedit="GridView1_RowCancelingEdit" 
     5         onrowdeleting="GridView1_RowDeleting" onrowediting="GridView1_RowEditing" 
     6         onrowupdating="GridView1_RowUpdating" onsorting="GridView1_Sorting">
     7         <Columns>
     8 
     9             <%--<asp:TemplateField HeaderText="身份证号" SortExpression="pid">
    10                 <ItemTemplate>
    11                     <asp:Label ID="Label1" runat="server" Text='<%# Bind("pid") %>'></asp:Label>
    12                 </ItemTemplate>
    13             </asp:TemplateField>--%>
    14             <asp:BoundField DataField="pid" HeaderText="身份证号" SortExpression="pid" />
    15             <asp:BoundField DataField="pname" HeaderText="姓名" SortExpression="pname" />
    16             <asp:BoundField DataField="psex" HeaderText="性别" SortExpression="psex" />
    17             <asp:BoundField DataField="padress" HeaderText="地址" SortExpression="padress" />
    18             <asp:BoundField DataField="pyoubiao" HeaderText="邮编"  SortExpression="pyoubiao" />
    19             <asp:BoundField DataField="pprice" HeaderText="工资起价" SortExpression="pprice" />
    20              <asp:CommandField HeaderText="选择" ShowSelectButton="True" />
    21             <asp:CommandField HeaderText="编辑" ShowEditButton="True" />
    22             <asp:CommandField HeaderText="删除" ShowDeleteButton="True" />
    23         </Columns>
    24         <EmptyDataRowStyle BackColor="Red" />
    25         <HeaderStyle BackColor="#0000CC" Font-Bold="True" ForeColor="White" />
    26         <PagerStyle BackColor="#864"  HorizontalAlign="Center" ForeColor="White"/>
    27     </asp:GridView>

     

    GridView.aspx.cs

    View Code
      //公有数据
            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["sqlcon"].ConnectionString);
            SqlCommand cmd;
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    ViewState["SortOrder"] = "pname";
                    ViewState["OrderDire"] = "ASC";
                    Sortbind1();//排序绑定
                }
            }
    
    
    //排序绑定
            public void Sortbind1()
            {
                string sqlstr = "select top 5 * from person";
                SqlDataAdapter myda = new SqlDataAdapter(sqlstr, con);
                DataSet ds = new DataSet();
                con.Open();
                myda.Fill(ds, "person");
                DataView view = ds.Tables["person"].DefaultView;
                string sort = (string)ViewState["SortOrder"] + " " + (string)ViewState["OrderDire"];
                view.Sort = sort;
                GridView1.DataSource = view;
                GridView1.DataBind();
                con.Close();
            }
    
     //排序
            protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
            {
                string sPage = e.SortExpression;
                if (ViewState["SortOrder"].ToString() == sPage)
                {
                    if (ViewState["OrderDire"].ToString() == "Desc")
                    {
                        ViewState["OrderDire"] = "ASC";
                    }
                    else
                    {
                        ViewState["OrderDire"] = "Desc";
                    }
                }
                else
                {
                    ViewState["SortOrder"] = e.SortExpression;
                }
                Sortbind1();
    
            }

     

    运行结果:

    排序前:

    排序后:

     

     




    GridView和下拉菜单DropDownList结合

    小实例:

    GridView.aspx

    View Code
     1 <asp:GridView ID="GridView1" runat="server" Height="138px" Width="1117px" 
     2         AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" 
     3         onpageindexchanging="GridView1_PageIndexChanging" 
     4         onrowcancelingedit="GridView1_RowCancelingEdit" 
     5         onrowdeleting="GridView1_RowDeleting" onrowediting="GridView1_RowEditing" 
     6         onrowupdating="GridView1_RowUpdating" onsorting="GridView1_Sorting">
     7         <Columns>
     8 
     9             <%--<asp:TemplateField HeaderText="身份证号" SortExpression="pid">
    10                 <ItemTemplate>
    11                     <asp:Label ID="Label1" runat="server" Text='<%# Bind("pid") %>'></asp:Label>
    12                 </ItemTemplate>
    13             </asp:TemplateField>--%>
    14             <asp:BoundField DataField="pid" HeaderText="身份证号" SortExpression="pid" />
    15             <asp:BoundField DataField="pname" HeaderText="姓名" SortExpression="pname" />
    16             <asp:TemplateField HeaderText="性别" SortExpression="psex" >
    17                 <ItemTemplate>
    18                     <asp:DropDownList ID="DropDownList1" runat="server" DataSource='<%# ddlbind()%>' DataValueField="psex" DataTextField="psex"/>
    19                 </ItemTemplate>
    20             </asp:TemplateField>
    21             <asp:BoundField DataField="padress" HeaderText="地址" SortExpression="padress" />
    22             <asp:BoundField DataField="pyoubiao" HeaderText="邮编" 
    23                 SortExpression="pyoubiao" />
    24             <asp:BoundField DataField="pprice" HeaderText="工资起价" SortExpression="pprice" />
    25              <asp:CommandField HeaderText="选择" ShowSelectButton="True" />
    26             <asp:CommandField HeaderText="编辑" ShowEditButton="True" />
    27             <asp:CommandField HeaderText="删除" ShowDeleteButton="True" />
    28         </Columns>
    29         <EmptyDataRowStyle BackColor="Red" />
    30         <HeaderStyle BackColor="#0000CC" Font-Bold="True" ForeColor="White" />
    31         <PagerStyle BackColor="#864"  HorizontalAlign="Center" ForeColor="White"/>
    32     </asp:GridView>

     

    GridView.aspx.cs

    View Code
     //公有数据
            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["sqlcon"].ConnectionString);
            SqlCommand cmd;
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    Drpbind();//dropdown绑定
                    
                }
            }
    
    
     //DropDownList绑定数据
            DropDownList ddl;
            public void Drpbind()
            {
                string sqlstr = "select top 5 * from person";
                con.Open();
                SqlDataAdapter myda = new SqlDataAdapter(sqlstr, con);
                DataSet ds = new DataSet(); 
                myda.Fill(ds, "person");
                GridView1.DataSource = ds;
                GridView1.DataBind();
                for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
                {
                    DataRowView mydrv = ds.Tables["person"].DefaultView[i];
                    if (Convert.ToString(mydrv["psex"]).Trim() == "")
                    {
                        ddl = (DropDownList)GridView1.Rows[i].FindControl("DropDownList1");
                        ddl.SelectedIndex = 0;
    
                    }
                    else  if (Convert.ToString(mydrv["psex"]).Trim() == "")
                    {
                        ddl = (DropDownList)GridView1.Rows[i].FindControl("DropDownList1");
                        ddl.SelectedIndex = 1;
                    }
                }
                con.Close();
    
            }
    
    
     //GridView和下拉菜单DropDownList结合,前台性别列datasouce调用
            public SqlDataReader ddlbind()
            {
              
                string sqlstr = "select distinct psex from person";//distinct只显示一次性别
                using (cmd = new SqlCommand(sqlstr, con))
                {
                    con.Close();
                    con.Open();
                    return cmd.ExecuteReader();
                }
            }

     

    运行结果:

     




    GridView和CheckBox结合

    小实例:

    GridView.aspx

    View Code
     1 <form id="form1" runat="server">
     2     <asp:GridView ID="GridView1" runat="server" Height="138px" Width="1117px" 
     3         AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" 
     4         onpageindexchanging="GridView1_PageIndexChanging" 
     5         onrowcancelingedit="GridView1_RowCancelingEdit" 
     6         onrowdeleting="GridView1_RowDeleting" onrowediting="GridView1_RowEditing" 
     7         onrowupdating="GridView1_RowUpdating" PageSize="4">
     8         <Columns>
     9              <asp:TemplateField>
    10                 <ItemTemplate>
    11                     <asp:CheckBox ID="CheckBox1" runat="server" />
    12                  </ItemTemplate>
    13               </asp:TemplateField>
    14            <asp:BoundField DataField="pid" HeaderText="身份证号" SortExpression="pid" />
    15             <asp:BoundField DataField="pname" HeaderText="姓名" SortExpression="pname" />
    16             <asp:BoundField DataField="psex" HeaderText="性别" SortExpression="psex" />
    17             <asp:BoundField DataField="padress" HeaderText="地址" SortExpression="padress" />
    18             <asp:BoundField DataField="pyoubiao" HeaderText="邮编"  SortExpression="pyoubiao" />
    19             <asp:BoundField DataField="pprice" HeaderText="工资起价" SortExpression="pprice" />
    20             <%-- <asp:CommandField HeaderText="选择" ShowSelectButton="True" />
    21             <asp:CommandField HeaderText="编辑" ShowEditButton="True" />
    22             <asp:CommandField HeaderText="删除" ShowDeleteButton="True" />--%>
    23         </Columns>
    24         <EmptyDataRowStyle BackColor="Red" />
    25         <HeaderStyle BackColor="#0000CC" Font-Bold="True" ForeColor="White" />
    26         <PagerStyle BackColor="#864"  HorizontalAlign="Center" ForeColor="White"/>
    27     </asp:GridView>
    28     <br />
    29     <asp:CheckBox ID="CheckBox2" runat="server" ForeColor="Red" Text="全选" 
    30         AutoPostBack="True" oncheckedchanged="CheckBox2_CheckedChanged" />
    31     
    32     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    33     <asp:Button ID="Button1" runat="server" Font-Bold="true" ForeColor="red"  
    34         Text="删除" onclick="Button1_Click" />
    35 &nbsp;&nbsp;
    36     <asp:Button ID="Button2" runat="server" Font-Bold="true" ForeColor="red" 
    37         Text="取消" onclick="Button2_Click" />
    38     </form>

     

    GridView.aspx.cs

    View Code
       //公有数据
            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["sqlcon"].ConnectionString);
            SqlCommand cmd;
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    bind(); //正常绑定
                }
            }
    
    
      public void bind()
            {
                //数据连接web.config中已配置的数据
                SqlDataAdapter da = new SqlDataAdapter("select  * from person", con);//使用数据适配器内置查询,自动开闭数据库
                DataSet ds = new DataSet();//使用数据集,采取断开式访问数据
                da.Fill(ds, "person");
                GridView1.DataSource = ds;
                GridView1.DataKeyNames=new string[]{"pid"};//设置主键
                GridView1.DataBind();
            }
    
    
     //利用CheckBox选中信息
            protected void CheckBox2_CheckedChanged(object sender, EventArgs e)
            {
                for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
                {
                    CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");
                    if (CheckBox2.Checked == true)
                    {
                        cbox.Checked = true;
                    }
                    else
                    {
                        cbox.Checked = false;
                    }
                }
    
            }
    
     //删除选中信息
            protected void Button1_Click(object sender, EventArgs e)
            {
                for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
                {
                    CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");
                    if (cbox.Checked == true)
                    {
                        string sqlstr = "delete from person where pid='" + GridView1.DataKeys[i].Value + "'";
                        cmd = new SqlCommand(sqlstr, con);
                        con.Open();
                        cmd.ExecuteNonQuery();
                        con.Close();
                    }
                }
                bind();
    
            }
            //取消选中信息
            protected void Button2_Click(object sender, EventArgs e)
            {
                CheckBox2.Checked = false;
                for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
                {
                    CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");
                    cbox.Checked = false;
                }
    
            }

     

    运行结果:

     

     




    鼠标移到GridView某一行时改变该行的背景色方法一

    小实例:

    GridView.aspx

    View Code
     1  <asp:GridView ID="GridView1" runat="server" Height="138px" Width="1117px" 
     2         AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" 
     3         onpageindexchanging="GridView1_PageIndexChanging" 
     4         onrowcancelingedit="GridView1_RowCancelingEdit" 
     5         onrowdeleting="GridView1_RowDeleting" onrowediting="GridView1_RowEditing" 
     6         onrowupdating="GridView1_RowUpdating" PageSize="4" 
     7         onrowdatabound="GridView1_RowDataBound">
     8         <Columns>
     9              <asp:TemplateField>
    10                 <ItemTemplate>
    11                     <asp:CheckBox ID="CheckBox1" runat="server" />
    12                  </ItemTemplate>
    13               </asp:TemplateField>
    14            <asp:BoundField DataField="pid" HeaderText="身份证号" SortExpression="pid" />
    15             <asp:BoundField DataField="pname" HeaderText="姓名" SortExpression="pname" />
    16             <asp:BoundField DataField="psex" HeaderText="性别" SortExpression="psex" />
    17             <asp:BoundField DataField="padress" HeaderText="地址" SortExpression="padress" />
    18             <asp:BoundField DataField="pyoubiao" HeaderText="邮编"  SortExpression="pyoubiao" />
    19             <asp:BoundField DataField="pprice" HeaderText="工资起价" SortExpression="pprice" />
    20             <%-- <asp:CommandField HeaderText="选择" ShowSelectButton="True" />
    21             <asp:CommandField HeaderText="编辑" ShowEditButton="True" />
    22             <asp:CommandField HeaderText="删除" ShowDeleteButton="True" />--%>
    23         </Columns>
    24         <EmptyDataRowStyle BackColor="Red" />
    25         <HeaderStyle BackColor="#0000CC" Font-Bold="True" ForeColor="White" />
    26         <PagerStyle BackColor="#864"  HorizontalAlign="Center" ForeColor="White"/>
    27     </asp:GridView>

     

    GridView.aspx.cs

    View Code
      //公有数据
            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["sqlcon"].ConnectionString);
            SqlCommand cmd;
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    bind(); //正常绑定
                }
            }
    
      public void bind()
            {
                //数据连接web.config中已配置的数据
                SqlDataAdapter da = new SqlDataAdapter("select  * from person", con);//使用数据适配器内置查询,自动开闭数据库
                DataSet ds = new DataSet();//使用数据集,采取断开式访问数据
                da.Fill(ds, "person");
                GridView1.DataSource = ds;
                GridView1.DataKeyNames=new string[]{"pid"};//设置主键
                GridView1.DataBind();
            }
    
     //鼠标移动到某一行,改变改行颜色
            protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
            {
                for (int i = 0; i < GridView1.Rows.Count+1; i++) //执行循环,保证每条数据都可以更新
                {
                    if (e.Row.RowType == DataControlRowType.DataRow)  //首先判断是否是数据行
                    {
                        //当鼠标停留时更改背景色
                        e.Row.Attributes.Add("onmouseover", "c=this.style.backgroundColor;this.style.backgroundColor='#999'");
                        //当鼠标移开时还原背景色
                        e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=c");
                    }
                }
    
            }

     

    运行结果:

     




    鼠标移到GridView某一行时改变该行的背景色方法二

    小实例:

    GridView.aspx

     View Code

    GridView.aspx.cs

    View Code
     1  //鼠标移动到某一行,改变改行颜色
     2         protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
     3         {
     4             //如果是绑定数据行 
     5             if (e.Row.RowType == DataControlRowType.DataRow)
     6             {
     7                 //鼠标经过时,行背景色变 
     8                 e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='#999'");
     9                 //鼠标移出时,行背景色变 
    10                 e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='#087'");
    11             }
    12         }

     

    运行结果:

     




    GridView实现删除时弹出确认对话框

    小实例:

    GridView.aspx

    View Code
     1 <asp:GridView ID="GridView1" runat="server" Height="138px" Width="1117px" 
     2         AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" 
     3         onpageindexchanging="GridView1_PageIndexChanging" 
     4         onrowcancelingedit="GridView1_RowCancelingEdit" 
     5         onrowdeleting="GridView1_RowDeleting" onrowediting="GridView1_RowEditing" 
     6         onrowupdating="GridView1_RowUpdating" PageSize="4" 
     7         onrowdatabound="GridView1_RowDataBound">
     8         <Columns>
     9              <asp:TemplateField>
    10                 <ItemTemplate>
    11                     <asp:CheckBox ID="CheckBox1" runat="server" />
    12                  </ItemTemplate>
    13               </asp:TemplateField>
    14            <asp:BoundField DataField="pid" HeaderText="身份证号" SortExpression="pid" />
    15             <asp:BoundField DataField="pname" HeaderText="姓名" SortExpression="pname" />
    16             <asp:BoundField DataField="psex" HeaderText="性别" SortExpression="psex" />
    17             <asp:BoundField DataField="padress" HeaderText="地址" SortExpression="padress" />
    18             <asp:BoundField DataField="pyoubiao" HeaderText="邮编"  SortExpression="pyoubiao" />
    19             <asp:BoundField DataField="pprice" HeaderText="工资起价" SortExpression="pprice" />
    20             <%-- <asp:CommandField HeaderText="选择" ShowSelectButton="True" />
    21             <asp:CommandField HeaderText="编辑" ShowEditButton="True" />--%>
    22             <asp:CommandField HeaderText="删除" ShowDeleteButton="True" />
    23         </Columns>
    24         <EmptyDataRowStyle BackColor="Red" />
    25         <HeaderStyle BackColor="#0000CC" Font-Bold="True" ForeColor="White" />
    26         <PagerStyle BackColor="#864"  HorizontalAlign="Center" ForeColor="White"/>
    27     </asp:GridView>

     

    View Code

    GridView.aspx.cs

    View Code
     1    //鼠标移动到某一行,改变改行颜色
     2         protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
     3         {
     4             #region
     5             //如果是绑定数据行 
     6             if (e.Row.RowType == DataControlRowType.DataRow)
     7             {
     8                 //鼠标经过时,行背景色变 
     9                 e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='#999'");
    10                 //鼠标移出时,行背景色变 
    11                 e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='#087'");
    12             }
    13             #endregion
    14             //如果是绑定数据行 
    15             if (e.Row.RowType == DataControlRowType.DataRow)
    16             {
    17                 if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate)
    18                 {
    19                     ((LinkButton)e.Row.Cells[7].Controls[0]).Attributes.Add("onclick", "javascript:return confirm('你确认要删除:\"" + e.Row.Cells[1].Text + "\"吗?')");
    20                 }
    21             } 
    22         }

     

    运行结果:

     




    GridView实现自动编号

    小实例:

    GridView.aspx

    前台代码如上

    GridView.aspx.cs

    绑定显示数据代码如上,不再总结,以下只做主要代码:

    View Code
     1   //实现自动编号
     2         protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
     3         {
     4             #region
     5             //如果是绑定数据行 
     6             if (e.Row.RowType == DataControlRowType.DataRow)
     7             {
     8                 //鼠标经过时,行背景色变 
     9                 e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='#999'");
    10                 //鼠标移出时,行背景色变 
    11                 e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='#087'");
    12             }
    13             #endregion
    14             #region
    15             //如果是绑定数据行 
    16             if (e.Row.RowType == DataControlRowType.DataRow)
    17             {
    18                 if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate)
    19                 {
    20                     ((LinkButton)e.Row.Cells[8].Controls[0]).Attributes.Add("onclick", "javascript:return confirm('你确认要删除:\"" + e.Row.Cells[1].Text + "\"吗?')");
    21                 }
    22             }
    23             #endregion
    24             if (e.Row.RowIndex != -1)
    25             {
    26                 int id = e.Row.RowIndex + 1;
    27                 e.Row.Cells[0].Text = id.ToString();
    28             }
    29         }

     

    运行结果:






    GridView实现用“...”代替超长字符串

    小实例:

    GridView.aspx

    View Code
     1  <asp:GridView ID="GridView1" runat="server" Height="138px" Width="1117px" 
     2         AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" 
     3         onpageindexchanging="GridView1_PageIndexChanging" 
     4         onrowcancelingedit="GridView1_RowCancelingEdit" 
     5         onrowdeleting="GridView1_RowDeleting" onrowediting="GridView1_RowEditing" 
     6         onrowupdating="GridView1_RowUpdating" PageSize="4" 
     7         onrowdatabound="GridView1_RowDataBound">
     8         <Columns>
     9          <asp:BoundField DataField="id" HeaderText="证号" SortExpression="id" />
    10              <asp:TemplateField>
    11                  <ItemTemplate>
    12                     <asp:CheckBox ID="CheckBox1" runat="server" />
    13                  </ItemTemplate>
    14               </asp:TemplateField>
    15             <asp:BoundField DataField="pid" HeaderText="身份证号" SortExpression="pid" />
    16             <asp:BoundField DataField="pname" HeaderText="姓名" SortExpression="pname" />
    17             <asp:BoundField DataField="psex" HeaderText="性别" SortExpression="psex" />
    18             <asp:BoundField DataField="padress" HeaderText="地址" SortExpression="padress" />
    19             <asp:BoundField DataField="pyoubiao" HeaderText="邮编"  SortExpression="pyoubiao" />
    20             <asp:BoundField DataField="pprice" HeaderText="工资起价" SortExpression="pprice" />
    21             <%-- <asp:CommandField HeaderText="选择" ShowSelectButton="True" />
    22             <asp:CommandField HeaderText="编辑" ShowEditButton="True" />--%>
    23             <asp:CommandField HeaderText="删除" ShowDeleteButton="True" />
    24         </Columns>
    25         <EmptyDataRowStyle BackColor="Red" />
    26         <HeaderStyle BackColor="#0000CC" Font-Bold="True" ForeColor="White" />
    27         <PagerStyle BackColor="#864"  HorizontalAlign="Center" ForeColor="White"/>
    28     </asp:GridView>

    GridView.aspx.cs

    View Code
     1   public void bind()
     2         {
     3             //数据连接web.config中已配置的数据
     4             SqlDataAdapter da = new SqlDataAdapter("select  * from person", con);//使用数据适配器内置查询,自动开闭数据库
     5             DataSet ds = new DataSet();//使用数据集,采取断开式访问数据
     6             da.Fill(ds, "person");
     7             GridView1.DataSource = ds;
     8             GridView1.DataKeyNames=new string[]{"pid"};//设置主键
     9             GridView1.DataBind();
    10             //省略字符
    11             for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
    12             {
    13                 DataRowView mydrv;
    14                 string gIntro;
    15                 if (GridView1.PageIndex == 0)
    16                 {
    17                     mydrv = ds.Tables["person"].DefaultView[i];
    18                     gIntro = Convert.ToString(mydrv["padress"]);
    19                     GridView1.Rows[i].Cells[5].Text = SubStr(gIntro, 2);
    20                 }
    21                 else
    22                 {
    23                     mydrv = ds.Tables["person"].DefaultView[i + (5 * GridView1.PageIndex)];
    24                     gIntro = Convert.ToString(mydrv["padress"]);
    25                     GridView1.Rows[i].Cells[5].Text = SubStr(gIntro, 2);
    26                 }
    27             }
    28         }
    29 
    30         public string SubStr(string sString, int nLeng)
    31         {
    32             if (sString.Length <= nLeng)
    33             {
    34                 return sString;
    35             }
    36             string sNewStr = sString.Substring(0, nLeng);
    37             sNewStr = sNewStr + "...";
    38             return sNewStr;
    39         }

     

    运行结果:




    GridView显示隐藏某一列

    小实例:

    GridView.aspx

    View Code
     1 <asp:GridView ID="GridView1" runat="server" Height="138px" Width="1117px" 
     2         AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" 
     3         onpageindexchanging="GridView1_PageIndexChanging" 
     4         onrowcancelingedit="GridView1_RowCancelingEdit" 
     5         onrowdeleting="GridView1_RowDeleting" onrowediting="GridView1_RowEditing" 
     6         onrowupdating="GridView1_RowUpdating" PageSize="4" 
     7         onrowdatabound="GridView1_RowDataBound">
     8         <Columns>
     9          <asp:BoundField DataField="id" HeaderText="证号" SortExpression="id" />
    10              <asp:TemplateField>
    11                  <ItemTemplate>
    12                     <asp:CheckBox ID="CheckBox1" AutoPostBack="true" runat="server" />
    13                  </ItemTemplate>
    14               </asp:TemplateField>
    15             <asp:BoundField DataField="pid" HeaderText="身份证号" SortExpression="pid" />
    16             <asp:BoundField DataField="pname" HeaderText="姓名" SortExpression="pname" />
    17             <asp:BoundField DataField="psex" HeaderText="性别" SortExpression="psex" />
    18             <asp:BoundField DataField="padress" HeaderText="地址"   SortExpression="padress" />
    19             <asp:BoundField DataField="pyoubiao" HeaderText="邮编"  SortExpression="pyoubiao" />
    20             <asp:BoundField DataField="pprice" HeaderText="工资起价" SortExpression="pprice" />
    21             <%-- <asp:CommandField HeaderText="选择" ShowSelectButton="True" />
    22             <asp:CommandField HeaderText="编辑" ShowEditButton="True" />--%>
    23             <asp:CommandField HeaderText="删除" ShowDeleteButton="True" />
    24         </Columns>
    25         <EmptyDataRowStyle BackColor="Red" />
    26         <HeaderStyle BackColor="#0000CC" Font-Bold="True" ForeColor="White" />
    27         <PagerStyle BackColor="#864"  HorizontalAlign="Center" ForeColor="White"/>
    28     </asp:GridView>
    29     <br />
    30     <asp:CheckBox ID="CheckBox2" runat="server" ForeColor="Red" Text="全选" 
    31         AutoPostBack="True" oncheckedchanged="CheckBox2_CheckedChanged" />
    32     
    33     &nbsp;&nbsp;&nbsp;<asp:CheckBox ID="CheckBox3" runat="server" ForeColor="Red" Text="隐藏工资起价" 
    34         AutoPostBack="True" oncheckedchanged="CheckBox3_CheckedChanged" />
    35     
    36     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    37     <asp:Button ID="Button1" runat="server" Font-Bold="true" ForeColor="red"  
    38         Text="删除" onclick="Button1_Click" />
    39 &nbsp;&nbsp;
    40     <asp:Button ID="Button2" runat="server" Font-Bold="true" ForeColor="red" 
    41         Text="取消" onclick="Button2_Click" />

     

    GridView.aspx.cs

    View Code
    public void bind()
            {
                //数据连接web.config中已配置的数据
                SqlDataAdapter da = new SqlDataAdapter("select  * from person", con);//使用数据适配器内置查询,自动开闭数据库
                DataSet ds = new DataSet();//使用数据集,采取断开式访问数据
                da.Fill(ds, "person");
                GridView1.DataSource = ds;
                GridView1.DataKeyNames=new string[]{"pid"};//设置主键
                GridView1.DataBind();
                //省略字符
                #region
                for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
                {
                    DataRowView mydrv;
                    string gIntro;
                    if (GridView1.PageIndex == 0)
                    {
                        mydrv = ds.Tables["person"].DefaultView[i];
                        gIntro = Convert.ToString(mydrv["padress"]);
                        GridView1.Rows[i].Cells[5].Text = SubStr(gIntro, 2);
                    }
                    else
                    {
                        mydrv = ds.Tables["person"].DefaultView[i + (5 * GridView1.PageIndex)];
                        gIntro = Convert.ToString(mydrv["padress"]);
                        GridView1.Rows[i].Cells[5].Text = SubStr(gIntro, 2);
                    }
                }
                #endregion
                //隐藏列
                GridView1.Columns[7].Visible = false;//一开始隐藏
                CheckBox3.Checked = false;//如果不这样后面的代码会把他True
            }
    
    
    
      //隐藏列
            protected void CheckBox3_CheckedChanged(object sender, EventArgs e)
            {
                GridView1.Columns[7].Visible = !GridView1.Columns[7].Visible;
                Response.Write("GridView1的第8列现在的显示隐藏状态是:" + GridView1.Columns[7].Visible.ToString());
            }

     

    运行结果:

     




    GridView弹出新页面/弹出新窗口

    小实例:

    GridView.aspx

    View Code

    运行结果:

     




    GridView突出显示某一单元格(工资低于10000元)

    小实例:

    GridView.aspx

    View Code
     1 <asp:GridView ID="GridView1" runat="server" Height="138px" Width="1117px" 
     2         AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" 
     3         onpageindexchanging="GridView1_PageIndexChanging" 
     4         onrowcancelingedit="GridView1_RowCancelingEdit" 
     5         onrowdeleting="GridView1_RowDeleting" onrowediting="GridView1_RowEditing" 
     6         onrowupdating="GridView1_RowUpdating" PageSize="4" 
     7         onrowdatabound="GridView1_RowDataBound">
     8         <Columns>
     9             <asp:BoundField DataField="pid" HeaderText="身份证号" SortExpression="pid" />
    10 <%--  <asp:BoundField DataField="pname" HeaderText="姓名" SortExpression="pname" />--%>
    11          
    12              <asp:HyperLinkField HeaderText="姓名" Text="姓名" DataNavigateUrlFields="pname" DataNavigateUrlFormatString="WebForm1.aspx?GoodsID={0}" Target="mainframe" NavigateUrl="~/WebForm1.aspx" DataTextField="pname" >
    13              </asp:HyperLinkField>
    14             <asp:BoundField DataField="psex" HeaderText="性别" SortExpression="psex" />
    15             <asp:BoundField DataField="padress" HeaderText="地址"   SortExpression="padress" />
    16             <asp:BoundField DataField="pyoubiao" HeaderText="邮编"  SortExpression="pyoubiao" />
    17             <asp:BoundField DataField="pprice" HeaderText="工资起价" DataFormatString="{0:C}"  SortExpression="pprice" />
    18              <asp:CommandField HeaderText="选择" ShowSelectButton="True" />
    19             <asp:CommandField HeaderText="编辑" ShowEditButton="True" />
    20             <asp:CommandField HeaderText="删除" ShowDeleteButton="True" />
    21         </Columns>
    22         <EmptyDataRowStyle BackColor="Red" />
    23         <HeaderStyle BackColor="#0000CC" Font-Bold="True" ForeColor="White" />
    24         <PagerStyle BackColor="#864"  HorizontalAlign="Center" ForeColor="White"/>
    25     </asp:GridView>

    GridView.aspx.cs

    View Code
     public void bind()
            {
                //数据连接web.config中已配置的数据
                SqlDataAdapter da = new SqlDataAdapter("select * from person", con);//使用数据适配器内置查询,自动开闭数据库
                DataSet ds = new DataSet();//使用数据集,采取断开式访问数据
                da.Fill(ds, "person");
                GridView1.DataSource = ds;
                GridView1.DataKeyNames=new string[]{"pid"};//设置主键
                GridView1.DataBind();
                //省略字符
                #region
                //for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
                //{
                //    DataRowView mydrv;
                //    string gIntro;
                //    if (GridView1.PageIndex == 0)
                //    {
                //        mydrv = ds.Tables["person"].DefaultView[i];
                //        gIntro = Convert.ToString(mydrv["padress"]);
                //        GridView1.Rows[i].Cells[3].Text = SubStr(gIntro, 2);
                //    }
                //    else
                //    {
                //        mydrv = ds.Tables["person"].DefaultView[i + (5 * GridView1.PageIndex)];
                //        gIntro = Convert.ToString(mydrv["padress"]);
                //        GridView1.Rows[i].Cells[5].Text = SubStr(gIntro, 2);
                //    }
                //}
                #endregion
                //隐藏列
                //GridView1.Columns[3].Visible = false;//一开始隐藏
                //CheckBox3.Checked = false;//如果不这样后面的代码会把他True
                //突出显示某一单元格(工资起价少于10000)
                for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
                {
                    DataRowView mydrv = ds.Tables["person"].DefaultView[i];
                    string price = Convert.ToString(mydrv["pprice"]);
                    if (Convert.ToDouble(price) < 10000)//大家这里根据具体情况设置可能ToInt32等等
                    {
                        GridView1.Rows[i].Cells[5].BackColor = System.Drawing.Color.Red;
                    }
                }
            }

    运行结果:




    GridView数据导入Excel/Excel数据读入GridView

    小实例:

    GridView.aspx

    添加:<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="GridView.aspx.cs"
    Inherits="DBControls.GridView" EnableEventValidation = "false"
    %>

    View Code
     <asp:GridView ID="GridView1" runat="server" Height="138px" Width="1117px" 
            AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" 
            onpageindexchanging="GridView1_PageIndexChanging" 
            onrowcancelingedit="GridView1_RowCancelingEdit" 
            onrowdeleting="GridView1_RowDeleting" onrowediting="GridView1_RowEditing" 
            onrowupdating="GridView1_RowUpdating" PageSize="4" 
            onrowdatabound="GridView1_RowDataBound">
            <Columns>
                <asp:BoundField DataField="pid" HeaderText="身份证号" SortExpression="pid" />
    <%--  <asp:BoundField DataField="pname" HeaderText="姓名" SortExpression="pname" />--%>
             
                 <asp:HyperLinkField HeaderText="姓名" Text="姓名" DataNavigateUrlFields="pname" DataNavigateUrlFormatString="WebForm1.aspx?GoodsID={0}" Target="mainframe" NavigateUrl="~/WebForm1.aspx" DataTextField="pname" >
                 </asp:HyperLinkField>
                <asp:BoundField DataField="psex" HeaderText="性别" SortExpression="psex" />
                <asp:BoundField DataField="padress" HeaderText="地址"   SortExpression="padress" />
                <asp:BoundField DataField="pyoubiao" HeaderText="邮编"  SortExpression="pyoubiao" />
                <asp:BoundField DataField="pprice" HeaderText="工资起价" DataFormatString="{0:C}"  SortExpression="pprice" />
                 <asp:CommandField HeaderText="选择" ShowSelectButton="True" />
                <asp:CommandField HeaderText="编辑" ShowEditButton="True" />
                <asp:CommandField HeaderText="删除" ShowDeleteButton="True" />
            </Columns>
            <EmptyDataRowStyle BackColor="Red" />
            <HeaderStyle BackColor="#0000CC" Font-Bold="True" ForeColor="White" />
            <PagerStyle BackColor="#864"  HorizontalAlign="Center" ForeColor="White"/>
            <FooterStyle BackColor="White" HorizontalAlign="Center" ForeColor="Red"/>
        </asp:GridView>

    GridView.aspx.cs

    View Code
    //导出数据
            protected void Button3_Click(object sender, EventArgs e)
            {
                Export("application/ms-excel", "student.xls");
    
            }
            private void Export(string FileType, string FileName)
            {
                Response.Charset = "GB2312";
                Response.ContentEncoding = System.Text.Encoding.UTF7;
                Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
                Response.ContentType = FileType;
                this.EnableViewState = false;
                StringWriter tw = new StringWriter();
                HtmlTextWriter hw = new HtmlTextWriter(tw);
                GridView1.RenderControl(hw);
                Response.Write(tw.ToString());
                Response.End();
            }
            //如果没有下面方法会报错
            public override void VerifyRenderingInServerForm(Control control)
            {
            }

     

    运行结果:

    导出结果:

     

     


     

  • 相关阅读:
    CF1461F
    P7114
    CF576D
    CF1208F
    【2021-05-25】碎片化自有碎片化的办法
    【2021-05-23】人生十三信条
    【2021-05-22】人生十三信条
    【2021-05-21】人做成一件事,第一步往往是戒
    【2021-05-20】确认一个人,也就三秒钟的事情
    【2021-05-19】人生十三信条
  • 原文地址:https://www.cnblogs.com/baiboy/p/myGridView.html
Copyright © 2011-2022 走看看