• GridView使用总结


    1、GridView无代码分页排序

    截图00

    (1).AllowSorting设为True,aspx代码中是AllowSorting="True";
    (2).默认1页10条,如果要修改每页条数,修改PageSize即可,在aspx代码中是PageSize="12"。
    (3).默认的是单向排序的,右击GridView弹出“属性”,选择AllowSorting为True即可。

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

    截图00

    前台代码:

    。。。。。。
        <asp:GridView ID="GridView1" runat="server" Height="133px" Width="539px" AutoGenerateColumns="False" DataKeyNames="id" 
    OnRowEditing="GridView1_RowEditing" BackColor="White" BorderColor="White" BorderStyle="Ridge" BorderWidth="2px" CellPadding="3" 
    CellSpacing="1" GridLines="None" OnRowUpdating="GridView1_RowUpdating" OnRowCancelingEdit="GridView1_RowCancelingEdit" 
    OnRowDataBound="GridView1_RowDataBound"  OnRowDeleting="GridView1_RowDeleting" >
            <Columns>
                <asp:BoundField DataField="name" HeaderText="姓名" />
                <asp:BoundField DataField="id" HeaderText="编号" DataFormatString="{0:000#}" ReadOnly="True" />
                <asp:BoundField DataField="score" HeaderText="分数" />
                <asp:CheckBoxField DataField="member" HeaderText="是否会员" ReadOnly="True" />
                <asp:CommandField HeaderText="编辑" ShowEditButton="True" />
                <asp:CommandField HeaderText="选择" ShowSelectButton="True" />
                <asp:CommandField HeaderText="删除" ShowDeleteButton="True" />
            </Columns>
            <RowStyle BackColor="#DEDFDE" ForeColor="Black" />
            <FooterStyle BackColor="#C6C3C6" ForeColor="Black" />
            <PagerStyle BackColor="#C6C3C6" ForeColor="Black" HorizontalAlign="Right" />
            <SelectedRowStyle BackColor="#9471DE" Font-Bold="True" ForeColor="White" />
            <HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#E7E7FF" />
        </asp:GridView>
    后台代码:
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    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;
    
    public partial class capital2_IDU : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                DataBindings();
            }
        }
       //数据绑定
        public void DataBindings()
        {
            this.GridView1.DataSource = GetStudentInfo();
            this.GridView1.DataBind();
        }
        public DataSet GetStudentInfo()
        {
            DataSet dt = null;
            using (SqlConnection sqlcon = new SqlConnection(DBHelper.con))
            {
                dt=DBHelper.GetStudentInfo(sqlcon, "select * from student");
                sqlcon.Close();
            }
            return dt;
        }
       //编辑
        protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            GridView1.EditIndex = e.NewEditIndex;
            DataBindings();
        }
       //更新
        protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            //GridViewRow row = GridView1.Rows[e.RowIndex];
            //int ID = int.Parse(GridView1.DataKeys[e.RowIndex].Values[0].ToString());
            //string userName = ((TextBox)row.FindControl("UserName")).Text.ToString();
            //double Money = Convert.ToDouble(((TextBox)row.FindControl("Money")).Text.ToString());
            GridViewRow row = GridView1.Rows[e.RowIndex];
            //int ID=row.Cells[1].Text
            int ID = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Values[0].ToString());
            string name = ((TextBox)(row.Cells[0].Controls[0])).Text;
            string score = ((TextBox)(row.Cells[2].Controls[0])).Text.Trim();
            using (SqlConnection sqlcon = new SqlConnection(DBHelper.con))
            {
                SqlDataReader dr;
                string sql = "Update student Set name='" + name + "',score='" + score + "' Where ID=" + ID + "";
                SqlCommand myCommand = new SqlCommand(sql, sqlcon);
                sqlcon.Open();
                dr = myCommand.ExecuteReader();
                //获取或设置要编辑的行的索引。默认值为 -1,指示没有正在编辑的行 .取消编辑状态。 
                //将gridview从编辑模式切换成浏览模式
    
                GridView1.EditIndex = -1;
                sqlcon.Close();
            }
            DataBindings();
        }
    //删除
        protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            GridViewRow row = GridView1.Rows[e.RowIndex];
            string ID = GridView1.DataKeys[e.RowIndex].Values[0].ToString().Trim();
            using (SqlConnection sqlcon = new SqlConnection(DBHelper.con))
            {
                SqlDataReader dr;
                string sql = "delete from student where  ID=" + ID;
                SqlCommand myCommand = new SqlCommand(sql, sqlcon);
                sqlcon.Open();
                dr = myCommand.ExecuteReader();
                sqlcon.Close();
            }
            Response.Write("<script type='text/javascript'>window.alert('删除成功')</script>");
            DataBindings();
        }
    //取消编辑
        protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            this.GridView1.EditIndex = -1;
            DataBindings();
        }
    //绑定每一行触发该事件,此处为了给cell添加属性
        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            //绑定数据行
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                if(e.Row.RowState==DataControlRowState.Normal|| e.Row.RowState==DataControlRowState.Alternate)
                {
                    ((LinkButton)e.Row.Cells[6].Controls[0]).Attributes.Add("OnClick", "javascript: return confirm('你确认要删除\"" + e.Row.Cells[0].Text.Trim() + "\"吗?')");
                    //鼠标经过时,行背景色变 
                    e.Row.Attributes.Add("onmouseover","this.style.backgroundColor='#E6F5FA'");
                    //鼠标移出时,行背景色变 
                    e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='#DEDFDE'");
                }
            }
        }
    }
    3、GridView和CheckBox结合
    截图00 

    点击更新时,需要获取checkbox值。

    后台代码如下:

    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    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;
    
    public partial class capital2_IDU1 : System.Web.UI.Page
    {
        private int sum = 0;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)//相当重要
            {
                DataBindings();
            }
        }
    //绑定数据
        public void DataBindings()
        {
            this.GridView1.DataSource = GetStudentInfo();
            this.GridView1.DataBind();
        }
        public DataSet GetStudentInfo()
        {
            DataSet dt = null;
            using (SqlConnection sqlcon = new SqlConnection(DBHelper.con))
            {
                dt = DBHelper.GetStudentInfo(sqlcon, "select * from student");
                sqlcon.Close();
            }
            return dt;
        }
        protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
    
        }
    //删除数据
        protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
    //获取关键字值
            GridViewRow row = GridView1.Rows[e.RowIndex];
            string ID = GridView1.DataKeys[e.RowIndex].Values[0].ToString().Trim();
            using (SqlConnection sqlcon = new SqlConnection(DBHelper.con))
            {
                SqlDataReader dr;
                string sql = "delete from student where  ID=" + ID;
                SqlCommand myCommand = new SqlCommand(sql, sqlcon);
                sqlcon.Open();
                dr = myCommand.ExecuteReader();
                sqlcon.Close();
            }
            Response.Write("<script type='text/javascript'>window.alert('删除成功')</script>");
            DataBindings();
        }
    //点击编辑按钮
        protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            GridView1.EditIndex = e.NewEditIndex;
            //点击编辑后,页面刷新,数据丢失,所以再次绑定
            DataBindings();
        }
    //更新数据
        protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            GridViewRow row = GridView1.Rows[e.RowIndex];
            int ID = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Values[0].ToString());
    //因为点击编辑后,该cell变为textbox,所以用该方法取值
            string name = ((TextBox)(row.Cells[0].Controls[0])).Text;
            string score = ((TextBox)(row.Cells[2].Controls[0])).Text.Trim();
    //获取checkbox值
            int ismember = ((CheckBox)row.Cells[3].Controls[0]).Checked?1:0;
            using (SqlConnection sqlcon = new SqlConnection(DBHelper.con))
            {
                SqlDataReader dr;
                string sql = "Update student Set name='" + name + "',score='" + score + "',member=" +ismember+" Where ID=" + ID + "";
                SqlCommand myCommand = new SqlCommand(sql, sqlcon);
                sqlcon.Open();
                dr = myCommand.ExecuteReader();
                //获取或设置要编辑的行的索引。默认值为 -1,指示没有正在编辑的行 .取消编辑状态。 
                //将gridview从编辑模式切换成浏览模式
    
                GridView1.EditIndex = -1;
                sqlcon.Close();
            }
            DataBindings();
        }
    //绑定每一行时执行
        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            //Header和Footer:e.Row.RowIndex =-1
            if (e.Row.RowIndex >= 0   )
            {
                if(e.Row.RowState==DataControlRowState.Normal ||e.Row.RowState==DataControlRowState.Alternate )
                {
                    sum += Convert.ToInt32(e.Row.Cells[2].Text);
                }
            }
     
    //求某一列的值合计
            if (e.Row.RowType == DataControlRowType.Footer)
            {
                e.Row.Cells[0].Text = "合计:";
                e.Row.Cells[2].Text = sum.ToString();
            }
            //绑定数据行
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate)
                {
    //为单元格添加属性
                    ((LinkButton)e.Row.Cells[6].Controls[0]).Attributes.Add("OnClick", "javascript: return confirm('你确认要删除\"" + e.Row.Cells[0].Text.Trim() + "\"吗?')");
                    //鼠标经过时,行背景色变 
                    e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='#E6F5FA'");
                    //鼠标移出时,行背景色变 
                    e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='#DEDFDE'");
                }
            }
        }
    //勾选“全选”checkbox
        protected void CheckBox2_CheckedChanged(object sender, EventArgs e)
        {
            foreach(GridViewRow row in GridView1.Rows)
            {
                if (row.RowType == DataControlRowType.DataRow)
                {
    //根据ID选中gridview中的checkbox,该checkbox使用的是模板
                    ((CheckBox)row.FindControl("CheckBox1")).Checked = CheckAll.Checked;
                }
            }
        }
    //点击“插入”按钮
        protected void LinkButton1_Click(object sender, EventArgs e)
        {
    
            string name = this.txtname.Text;
            string score = this.txtscore.Text;
            int ismember = this.CheckBox2.Checked ? 1 : 0;
            using (SqlConnection sqlcon = new SqlConnection(DBHelper.con))
            {
                SqlDataReader dr;
                string sql = "insert into student (name,member,score) values('" + name + "'," + ismember + "," + score + ")";
                SqlCommand myCommand = new SqlCommand(sql, sqlcon);
                sqlcon.Open();
                dr = myCommand.ExecuteReader();
                //获取或设置要编辑的行的索引。默认值为 -1,指示没有正在编辑的行 .取消编辑状态。 
                //将gridview从编辑模式切换成浏览模式
                sqlcon.Close();
            }
            DataBindings();
        }
    }
    

    前台代码如下:

    <%@ Page Language="C#"  AutoEventWireup="true" CodeFile="IDU1.aspx.cs" Inherits="capital2_IDU1" Title="Untitled Page" %>

    <!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 id="Head1" runat="server">
        <title>无标题页</title>
        <script type="text/javascript">
    function DeleteEmpty(str)
    {
        var s=str.toString();
        return s.replace( /^\s*/, "" ).replace( /\s*$/, "" );
    }
    function LoadCheck()
    {
        var name=DeleteEmpty(document.getElementById('<%=txtname.ClientID %>').value);
        var score1=DeleteEmpty(document.getElementById('<%=txtscore.ClientID %>').value);
        if(name=="")
        {
        document.getElementById("Name").innerHTML="please enter a name";
        }
        else if(score1=="")
        {
        document.getElementById("Score").innerHTML="please enter a score";
        }
        else
        {
        __doPostBack('link','');
        }
    }

    </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <asp:GridView ID="GridView1" runat="server" Height="152px" Width="572px" AutoGenerateColumns="False" OnRowCommand="GridView1_RowCommand" OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" OnRowDataBound="GridView1_RowDataBound" ShowFooter="True" DataKeyNames="id">
                <Columns>
                <asp:BoundField DataField="name" HeaderText="姓名" />
                <asp:BoundField DataField="id" HeaderText="编号" DataFormatString="{0:000#}" ReadOnly="True" />
                <asp:BoundField DataField="score" HeaderText="分数" />
                <asp:CheckBoxField DataField="member" HeaderText="是否会员" >
                    <ItemStyle HorizontalAlign="Center" />
                </asp:CheckBoxField>
                    <asp:TemplateField HeaderText="选择">
                        <ItemTemplate>
                            <asp:CheckBox ID="CheckBox1" runat="server"/>
                        </ItemTemplate>
                        <ItemStyle HorizontalAlign="Center" />
                    </asp:TemplateField>
                    <asp:CommandField EditText="编辑" HeaderText="编辑" ShowEditButton="True" />
                    <asp:CommandField DeleteText="删除" HeaderText="删除" ShowDeleteButton="True" />
            </Columns>
            <RowStyle BackColor="#DEDFDE" ForeColor="Black" />
            <FooterStyle BackColor="Silver" ForeColor="Black" />
            <PagerStyle BackColor="#C6C3C6" ForeColor="Black" HorizontalAlign="Right" />
            <SelectedRowStyle BackColor="#9471DE" Font-Bold="True" ForeColor="White" />
            <HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#E7E7FF" />
        </asp:GridView>
        <asp:CheckBox ID="CheckAll" runat="server" OnCheckedChanged="CheckBox2_CheckedChanged" Text="全选" AutoPostBack="True" />
        <table style=" 572px" id="Table1">
            <tr>
                <td style=" 74px">
                    Name:</td>
                <td style=" 382px">
                    <asp:TextBox ID="txtname" runat="server"></asp:TextBox><span id="Name"><font color="red"></font></span>
                </td>
            </tr>
            <tr>
                <td style=" 74px">
                    Score:</td>
                <td style=" 382px">
                    <asp:TextBox ID="txtscore" runat="server"></asp:TextBox>
                    <span id="Score"><font color="red"></font></span>
                </td>
            </tr>
            <tr>
                <td style=" 74px; height: 22px">
                    Member:</td>
                <td style=" 382px; height: 22px">
                    <asp:CheckBox ID="CheckBox2" runat="server" /></td>
            </tr>
            <tr>
                <td style=" 74px; height: 22px" colspan="2">
                    <input id="BtInsert" type="button" value="插入" language="javascript" onclick="LoadCheck();"/></td>
            </tr>
        </table>
        </div>
        </form>
    </body>
    </html>

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

        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            //绑定数据行
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                if(e.Row.RowState==DataControlRowState.Normal|| e.Row.RowState==DataControlRowState.Alternate)
                {
                    ((LinkButton)e.Row.Cells[6].Controls[0]).Attributes.Add("OnClick", "javascript: return confirm('你确认要删除\"" + e.Row.Cells[0].Text.Trim() + "\"吗?')");
                    //鼠标经过时,行背景色变 
                    e.Row.Attributes.Add("onmouseover","this.style.backgroundColor='#E6F5FA'");
                    //鼠标移出时,行背景色变 
                    e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='#DEDFDE'");
                }
            }
        }
    5、GridView实现删除时弹出确认对话框
        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            //绑定数据行
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                if(e.Row.RowState==DataControlRowState.Normal|| e.Row.RowState==DataControlRowState.Alternate)
                {
                    ((LinkButton)e.Row.Cells[6].Controls[0]).Attributes.Add("OnClick", "javascript: return confirm('你确认要删除\"" + e.Row.Cells[0].Text.Trim() + "\"吗?')");
                    //鼠标经过时,行背景色变 
                    e.Row.Attributes.Add("onmouseover","this.style.backgroundColor='#E6F5FA'");
                    //鼠标移出时,行背景色变 
                    e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='#DEDFDE'");
                }
            }
        }
    6、GridView实现自动编号
    截图00 
        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowIndex != -1)
            {
                int id = e.Row.RowIndex + 1;
                e.Row.Cells[0].Text = id.ToString();
            }
    
        }

    注意:该编号只是当前页中的编号。

  • 相关阅读:
    第一部分 题目要求
    完全卸载oracle
    zabbix的面试题目总结
    性能优化之MySQL调优篇
    select与epoll、apache与nginx实现原理对比
    深度优化LNMP之PHP
    深度优化LNMP之Nginx (转)
    git常用命令
    ansible 安装与卸载软件
    java8两个List集合取交集、并集、差集、去重并集
  • 原文地址:https://www.cnblogs.com/smallstone/p/1716485.html
Copyright © 2020-2023  润新知