ASP.NET GridView用法(二) 模板,脚注,排序,编辑,删除,多选,分页,添加

来源:互联网 发布:仙侣情缘源码 编辑:程序博客网 时间:2024/05/21 12:48

这个例子是一个 图书管理的gridview. 项目地址:https://gitee.com/qiuyuhan/gridviewbookinfo

数据库:


如果要用脚注,基本每一项都需要改用模板的形式。

WebForm1.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="gridview书籍管理.WebForm1" %><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>    <title></title></head><body>    <form id="form1" runat="server">        <div>            <asp:GridView runat="server" ID="gridview1" AllowPaging="True" AutoGenerateColumns="False" OnPageIndexChanging="gridview1_PageIndexChanging" ShowFooter="True" OnRowEditing="gridview1_RowEditing" OnRowCancelingEdit="gridview1_RowCancelingEdit" OnRowDataBound="gridview1_RowDataBound" OnRowUpdating="gridview1_RowUpdating" OnRowDeleting="gridview1_RowDeleting" AllowSorting="True" OnSorting="gridview1_Sorting" >                <Columns>                    <asp:TemplateField HeaderText="书籍Id" SortExpression="Id" >                        <ItemTemplate>                            <asp:Label runat="server" ID="lbid" Text='<%# Eval("Id") %>' />                        </ItemTemplate>                                           </asp:TemplateField>                    <asp:TemplateField HeaderText="书籍名称" SortExpression="Title">                        <ItemTemplate>                            <asp:Label runat="server" ID="lbtitle" Text='<%# Eval("Title") %>' />                        </ItemTemplate>                        <EditItemTemplate>                            <asp:TextBox runat="server" ID="txtEditTitle" Text='<%# Eval("Title") %>' ></asp:TextBox>                        </EditItemTemplate>                         <FooterTemplate>                            <asp:TextBox runat="server" ID="txtTitle"></asp:TextBox>                        </FooterTemplate>                    </asp:TemplateField>                    <asp:TemplateField HeaderText="简介" SortExpression="Descript">                        <ItemTemplate>                            <asp:Label runat="server" ID="lbdes" Text='<%# Eval("Descript") %>'></asp:Label>                        </ItemTemplate>                            <EditItemTemplate>                            <asp:TextBox runat="server" ID="txtEditDes" Text='<%# Eval("Descript") %>' ></asp:TextBox>                        </EditItemTemplate>                         <FooterTemplate>                            <asp:TextBox runat="server" ID="txtDes"></asp:TextBox>                        </FooterTemplate>                    </asp:TemplateField>                    <asp:TemplateField HeaderText="图书分类" SortExpression="Booktype">                        <ItemTemplate>                            <asp:Label runat="server" ID="lbtype" Text='<%# Eval("Booktype") %>' />                        </ItemTemplate>                         <EditItemTemplate>                            <asp:DropDownList runat="server"  ID="ddEditType">                                      <asp:ListItem Text="计算机" Value="计算机"></asp:ListItem>                                 <asp:ListItem Text="其它" Value="其它"></asp:ListItem>                            </asp:DropDownList>                        </EditItemTemplate>                         <FooterTemplate>                            <asp:DropDownList runat="server" ID="ddType">                                <asp:ListItem Text="计算机" Value="计算机"></asp:ListItem>                                 <asp:ListItem Text="其它" Value="其它"></asp:ListItem>                            </asp:DropDownList>                        </FooterTemplate>                    </asp:TemplateField>                    <asp:TemplateField HeaderText="单价" SortExpression="Price">                        <ItemTemplate>                            <asp:Label runat="server" Text='<%# Eval("Price") %>' ID="labPrice"></asp:Label>                        </ItemTemplate>                         <EditItemTemplate>                            <asp:TextBox runat="server" ID="txtEditPrice" Text='<%# Eval("Price") %>' ></asp:TextBox>                        </EditItemTemplate>                        <FooterTemplate>                               <asp:TextBox runat="server" ID="txtPrice"></asp:TextBox>                        </FooterTemplate>                    </asp:TemplateField>                    <asp:TemplateField HeaderText="选择">                        <ItemTemplate>                            <asp:CheckBox runat="server" ID="chkbox"/>                        </ItemTemplate>                        <FooterTemplate>                            <asp:Button runat="server" ID="btnadd" Text="添加" OnClick="btnadd_Click"/>                        </FooterTemplate>                    </asp:TemplateField>                    <asp:CommandField runat="server" ShowEditButton="True" HeaderText="操作" />                     <asp:CommandField  runat="server" ShowDeleteButton="True" />                                   </Columns>            </asp:GridView>        </div>      <div>          <asp:CheckBox runat="server"  ID="chkAll" Text="全选" AutoPostBack="true" OnCheckedChanged="chkAll_CheckedChanged"/>          <asp:Button runat="server" ID="btndelall" Text="删除" OnClick="btndelall_Click" />      </div>        <div>           <asp:Button runat="server" ID="btnpricesum" Text="价格求和" OnClick="btnpricesum_Click"/> <asp:Label runat="server" ID="labsum" Text="0.00"></asp:Label>        </div>    </form></body></html>
WebForm1.aspx.cs

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using BLL;using Model;using System.Data;namespace gridview书籍管理{    public partial class WebForm1 : System.Web.UI.Page    {        private int currentid;        protected void Page_Load(object sender, EventArgs e)        {            if (!IsPostBack)            {                              //排序表达式  实际上就是 字段名(ViewState作为全局变量)                ViewState["sortexpression"] = "Id";                //排序顺序                ViewState["sortorder"] = "ASC";                //绑定数据                Bind();            }        }        public void Bind()        {           // this.gridview1.DataSource = BLL.UserBLL.selectAllbooks();            //设置datakey            this.gridview1.DataKeyNames = new string[] { "Id" };            //使用dataview进行排序            DataView view = BLL.UserBLL.selectAllbooks().DefaultView;            //设置排序            view.Sort = ViewState["sortexpression"] + " " + ViewState["sortorder"];            //设置dataview            this.gridview1.DataSource = view;            //绑定            this.gridview1.DataBind();        }        /// 分页时        protected void gridview1_PageIndexChanging(object sender, GridViewPageEventArgs e)        {            ///分页            this.gridview1.PageIndex = e.NewPageIndex;            //把编辑行恢复原状            this.gridview1.EditIndex = -1;            //重新绑定            Bind();        }        //行编辑时        protected void gridview1_RowEditing(object sender, GridViewEditEventArgs e)        {            //设置编辑行            this.gridview1.EditIndex = e.NewEditIndex;            //保存当前正在编辑的行的id            currentid = Convert.ToInt32(this.gridview1.DataKeys[e.NewEditIndex].Value);            //重新绑定            Bind();                    }        //退出编辑        protected void gridview1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)        {            //编辑行恢复            this.gridview1.EditIndex = -1;            Bind();        }        //行数据绑定        protected void gridview1_RowDataBound(object sender, GridViewRowEventArgs e)        {            if (this.gridview1.EditIndex == e.Row.RowIndex) //当前绑定数据行是编辑行            {                int currentindex = e.Row.RowIndex;                DropDownList ddl =(DropDownList) (e.Row.FindControl("ddEditType"));                if (ddl != null)                {                   bookinfo bi= UserBLL.selectbook(currentid);                    if (bi.Booktype == "其它")                    {                        ddl.SelectedIndex = 1;                    }                    else {                        ddl.SelectedIndex = 0;                    }                }            }        }        //行更新时        protected void gridview1_RowUpdating(object sender, GridViewUpdateEventArgs e)        {           int index= e.RowIndex;            TextBox txtTitle=   this.gridview1.Rows[index].FindControl("txtEditTitle") as TextBox;            TextBox txtDes = this.gridview1.Rows[index].FindControl("txtEditDes") as TextBox;            DropDownList ddl = this.gridview1.Rows[index].FindControl("ddEditType") as DropDownList;            TextBox txtPrice = this.gridview1.Rows[index].FindControl("txtEditPrice") as TextBox;            /////            bookinfo bi = new bookinfo();            bi.Title = txtTitle.Text;            bi.Decsript = txtDes.Text;            bi.Booktype = ddl.SelectedValue;            bi.Price = Convert.ToDouble(txtPrice.Text.Trim());            ///获取id            bi.Id = Convert.ToInt32(this.gridview1.DataKeys[index].Value);            BLL.UserBLL.updateBook(bi);            ////关闭编辑行            this.gridview1.EditIndex = -1;            //重新绑定数据            Bind();        }        //行删除时        protected void gridview1_RowDeleting(object sender, GridViewDeleteEventArgs e)        {            int index=e.RowIndex;            int id=Convert.ToInt32( this.gridview1.DataKeys[index].Value);            BLL.UserBLL.deleteByid(id);            //重新绑定            Bind();        }        //脚注里面的添加数据按钮点击事件        protected void btnadd_Click(object sender, EventArgs e)        {            //行对象.FindControl("ID")             // FooterRow.FindControl()            TextBox txttitle=this.gridview1.FooterRow.FindControl("txtTitle") as TextBox;            TextBox txtDes = this.gridview1.FooterRow.FindControl("txtDes") as TextBox;            DropDownList ddl = this.gridview1.FooterRow.FindControl("ddType") as DropDownList;            TextBox txtPrice = this.gridview1.FooterRow.FindControl("txtPrice") as TextBox;            ////            bookinfo bi = new bookinfo();            bi.Title = txttitle.Text;            bi.Decsript = txtDes.Text;            bi.Booktype = ddl.SelectedValue;            bi.Price = Convert.ToDouble(txtPrice.Text.Trim());            //            BLL.UserBLL.addBook(bi);            Bind();        }        //全选        protected void chkAll_CheckedChanged(object sender, EventArgs e)        {            if (this.chkAll.Checked == true)            {                for (int i = 0; i < this.gridview1.Rows.Count; i++)                {                    CheckBox chb = this.gridview1.Rows[i].FindControl("chkbox") as CheckBox;                    chb.Checked = true;                }            }            else {                for (int i = 0; i < this.gridview1.Rows.Count; i++)                {                    CheckBox chb = this.gridview1.Rows[i].FindControl("chkbox") as CheckBox;                    chb.Checked = false;                }            }        }        //选择删除按钮        protected void btndelall_Click(object sender, EventArgs e)        {            for (int i = 0; i < this.gridview1.Rows.Count; i++)            {                CheckBox chb = this.gridview1.Rows[i].FindControl("chkbox") as CheckBox;                if (chb.Checked == true)                {                    int id = Convert.ToInt32(this.gridview1.DataKeys[i].Value);                    BLL.UserBLL.deleteByid(id);                }            }            Bind();        }        //求和        protected void btnpricesum_Click(object sender, EventArgs e)        {            double sum = 0;            for (int i = 0; i < this.gridview1.Rows.Count; i++)            {                CheckBox chb = this.gridview1.Rows[i].FindControl("chkbox") as CheckBox;                if (chb.Checked == true)                {                    Label lab=this.gridview1.Rows[i].FindControl("labPrice") as Label;                    sum += Convert.ToDouble(lab.Text.Trim());                }            }            this.labsum.Text = sum.ToString();        }        //排序时        protected void gridview1_Sorting(object sender, GridViewSortEventArgs e)        {            //产生点击事件的排序字符串            string expression = e.SortExpression;            if (ViewState["sortexpression"].ToString() == expression)  //如果上次点击的是这个,就直接设置ASC,DESC            {                if (ViewState["sortorder"].ToString() == "ASC")                {                    ViewState["sortorder"] = "DESC";                }                else                {                    ViewState["sortorder"] = "ASC";                }            }            else            {                //如果上次没有点击这个 就直接排序                ViewState["sortexpression"] = expression;            }            /////////////这里只是设置一些全局变量 实际排序操作  在 DataView的Sort排序字符串里面设置            Bind();//重新绑定        }    }}

Web.Config

<?xml version="1.0" encoding="utf-8"?><!--  有关如何配置 ASP.NET 应用程序的详细信息,请访问  https://go.microsoft.com/fwlink/?LinkId=169433--><configuration>  <system.web>    <compilation debug="true" targetFramework="4.5.2"/>    <httpRuntime targetFramework="4.5.2"/>  </system.web>  <system.codedom>    <compilers>      <compiler language="c#;cs;csharp" extension=".cs"        type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"        warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"        type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"        warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+"/>    </compilers>  </system.codedom>  <connectionStrings>    <add name="MYSQL" connectionString="Data Source=.;Initial Catalog=gridview;Integrated Security=True"/>  </connectionStrings></configuration>
SQLHELPER.cs
using System;using System.Collections.Generic;using System.Text;//添加引用 System.Configurationusing System.Configuration;using System.Data;using System.Data.Sql;using System.Data.SqlClient;namespace DAL{    public class SQLHELPER    {        //获取Web.config里面的连接字符串        public static String configuration = ConfigurationManager.ConnectionStrings["MYSQL"].ConnectionString;        /// <summary>        /// 返回首行首列         /// </summary>        /// <param name="sqltext">sql语句</param>        /// <returns>(object)</returns>        public static object ExecuteScalar(string sqltext)        {            using (SqlConnection conn = new SqlConnection(configuration))            {                conn.Open();                SqlCommand cmd = new SqlCommand(sqltext, conn);                return cmd.ExecuteScalar();            }        }        /// <summary>        /// 返回受影响行数        /// </summary>        /// <param name="sqltext"></param>        /// <returns></returns>        public static object ExecuteNonQuery(string sqltext)        {            using (SqlConnection conn = new SqlConnection(configuration))            {                conn.Open();                SqlCommand cmd = new SqlCommand(sqltext, conn);                return cmd.ExecuteNonQuery();            }        }        /// <summary>        /// 返回DataSet结果集        /// </summary>        /// <param name="sqltext">SQL语句</param>        /// <returns>DataSet</returns>        public static DataSet ExecuteDataSet(string sqltext)        {            using (SqlConnection conn = new SqlConnection(configuration))            {                conn.Open();                SqlDataAdapter adapter = new SqlDataAdapter(sqltext, conn);                DataSet dataset = new DataSet();                adapter.Fill(dataset);                return dataset;            }        }    }}
UserServer.cs

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Data;using Model;namespace DAL{    public class UserServer    {        public static DataSet selectAllBooks()        {            string sql = " select * from bookinfo order by id desc";            return SQLHELPER.ExecuteDataSet(sql);        }        public static object addBook(bookinfo bi)        {            return SQLHELPER.ExecuteNonQuery("  insert into bookinfo (title,descript,booktype,price)values('" + bi.Title + "','" + bi.Decsript + "','" + bi.Booktype + "',' "+ bi.Price+"')");        }        //根据id查找book        public static DataSet selectBook(int id)        {            return SQLHELPER.ExecuteDataSet("  select [title],[descript],[booktype],[price] from bookinfo where id='" + id + "'");        }        //更新书籍信息         public static  object updateBook(bookinfo bi)        {            return  SQLHELPER.ExecuteNonQuery("  update bookinfo set title='" + bi.Title + "',descript='" + bi.Decsript + "',booktype='" + bi.Booktype+ "',price='" + bi.Price+"' where id='" + bi.Id+"'");        }        //删除书籍        public static object deleteByid(int id)        {            return SQLHELPER.ExecuteNonQuery("  delete from bookinfo where id='" + id + "'");        }    }}
UserBLL.cs

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Data;using DAL;using Model;namespace BLL{    public class UserBLL    {        public static DataTable selectAllbooks()        {            return UserServer.selectAllBooks().Tables[0];        }        public static int addBook(bookinfo bi)        {            return Convert.ToInt32(UserServer.addBook(bi));        }        ///根据id查找book        public static bookinfo selectbook(int id)        {            DataTable dt= UserServer.selectBook(id).Tables[0];            bookinfo bi = new bookinfo();            bi.Id = id;            bi.Title = dt.Rows[0][0].ToString();            bi.Decsript= dt.Rows[0][1].ToString();            bi.Booktype = dt.Rows[0][2].ToString();            return bi;      //      bi.Price = dt.Rows[0][3]        }        //更新书籍信息        public static int updateBook(bookinfo bi)        {            return Convert.ToInt32(DAL.UserServer.updateBook(bi));        }        //删除书籍        public static int deleteByid(int id)        {            return Convert.ToInt32(DAL.UserServer.deleteByid(id));        }    }}

bookinfo.cs

using System;using System.Collections.Generic;using System.Text;namespace Model{    /// <summary>    /// 图书信息实体类    /// </summary>    public class bookinfo    {        private int id;        private string title;        private string decsript;        private string booktype;        private double price;        public int Id { get => id; set => id = value; }        public string Title { get => title; set => title = value; }        public string Decsript { get => decsript; set => decsript = value; }        public string Booktype { get => booktype; set => booktype = value; }        public double Price { get => price; set => price = value; }            }}

运行效果:





阅读全文
0 0
原创粉丝点击