zoukankan      html  css  js  c++  java
  • GridView自定义分页及其他示例

    GridView 是一款功能强大的控件,也是在.Net WEB 开发中常用的控件之一。网上有关该控件的技术文章很多,这里也是借鉴了前人的做法,并在他们的基础上做了些改进,以更加贴近实际需求。同时也让自己对该控件更进一步的了解。

    先看一下效果吧!

    GridView 是一款功能强大的控件,也是在.Net WEB 开发中常用的控件之一。网上有关该控件的技术文章很多,这里也是借鉴了前人的做法,并在他们的基础上做了些改进,以更加贴近实际需求。同时也让自己对该控件更进一步的了解。

    先看一下效果吧!

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data;
    using System.IO;
    using System.Text;


    namespace GridViewPager
    {
    publicpartialclass Default : System.Web.UI.Page
    {
    DBHelper.DBHelper DB
    =new DBHelper.DBHelper();
    protectedvoid Page_Load(object sender, EventArgs e)
    {
    if(!IsPostBack)
    {
    Gw_Bind();
    }
    }
    publicvoid Gw_Bind()
    {
    string sql ="select * from tb_News order by ID ";
    DataTable dt
    = DB.GetData(sql, "tb_News");
    GwPage.DataSource
    = dt;
    // GwPage.DataKeyNames = new string[] { "NewsTitle" };//设置一个主键
    GwPage.DataKeyNames =newstring[] {"ID"};//设置一个主键
    GwPage.DataBind();
    }
    //GridView 控件页号选择发生改变时激发此事件实现显示数据更新刷新
    protectedvoid GwPage_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
    //分页完成之前
    GwPage.PageIndex = e.NewPageIndex;
    Gw_Bind();
    }
    #region 分页
    //创建一个页码导航
    protectedvoid IndexNavigator(object sender, GridViewRowEventArgs e)
    {
    if(e.Row.RowType == DataControlRowType.Pager)
    {
    PlaceHolder ph
    = (PlaceHolder)e.Row.FindControl("numeric");
    int StartIndex = (GwPage.PageIndex) /10*10+1;//根据当前页得到第一个页码
    int EndIndex = StartIndex +9;//每页显示10条记录
    if(EndIndex > GwPage.PageCount)//判断是否是最后一页
    {
    EndIndex
    = GwPage.PageCount;
    }
    //循环动态显示页码
    for (int i = StartIndex; i <= EndIndex;i++ )
    {
    var lbtn
    =new LinkButton {CommandName ="Page",CommandArgument = i.ToString(),Text ="["+i+"]" };
    ph.Controls.Add(i
    -1!= GwPage.PageIndex?(Control)lbtn:new LiteralControl(i.ToString()));
    ph.Controls.Add(
    new LiteralControl(""));
    }
    }
    }
    //实现各页面切换
    protectedvoid RowSwich(object sender, GridViewCommandEventArgs e)
    {
    if(e.CommandName =="Page")
    {
    switch(e.CommandArgument.ToString())
    {
    case"First": //首页
    GwPage.PageIndex =0;
    break;
    case"Prev": //前翻
    if(GwPage.PageIndex >0)
    {
    GwPage.PageIndex
    -=1;
    }
    break;
    case"Next": //后翻
    if(GwPage.PageIndex < GwPage.PageCount-1)
    {
    GwPage.PageIndex
    +=1;
    }
    break;
    case"Last": //尾页
    if(GwPage.PageIndex >= GwPage.PageCount)
    {
    GwPage.PageIndex
    = GwPage.PageCount -1;
    }
    break;
    default:
    GwPage.PageIndex
    = Int32.Parse(e.CommandArgument.ToString()) -1;
    break;
    }
    }
    }
    #endregion
    //删除一行
    protectedvoid GwPage_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
    int s =int.Parse(GwPage.DataKeys[e.RowIndex].Value.ToString());//获取主键值
    string sql ="delete from tb_News where ID = '"+ s +"'";
    int result = DB.DelRowByOne(sql);
    Response.Write(
    "<script>alert('删除"+ result+"条记录!')</script>");
    Gw_Bind();
    }
    //编辑一行
    protectedvoid GwPage_RowEditing(object sender, GridViewEditEventArgs e)
    {
    GwPage.EditIndex
    = e.NewEditIndex;
    Gw_Bind();
    }
    //更新一行
    protectedvoid GwPage_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
    int s =int.Parse(GwPage.DataKeys[e.RowIndex].Value.ToString());//获取主键值
    string NewsTitle = ((TextBox)(this.GwPage.Rows[e.RowIndex].Cells[2].Controls[0])).Text;
    string NewsContent = ((TextBox)(this.GwPage.Rows[e.RowIndex].Cells[3].Controls[0])).Text;
    DateTime FBdate
    = DateTime.Parse(((TextBox)(this.GwPage.Rows[e.RowIndex].Cells[4].Controls[0])).Text);
    string sql ="update tb_News set NewsTitle = '"+ NewsTitle +"',NewsContent = '"+ NewsContent +"',FBDate = '"+ FBdate +"' where ID = '"+ s +"'";
    int result = DB.UpdateRowByOne(sql);
    Response.Write(
    "<script>alert('更新"+ result +"条记录!')</script>");
    Gw_Bind();
    }
    //取消编辑
    protectedvoid GwPage_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
    {
    this.GwPage.EditIndex =-1;
    Gw_Bind();
    }
    //批量删除
    protectedvoid btnDel_Click(object sender, EventArgs e)
    {
    int result =0;
    //循环判断checkBox的选中情况
    for (int i =0; i < GwPage.Rows.Count;i++ )
    {
    CheckBox ck
    = (CheckBox)GwPage.Rows[i].FindControl("CheckBox1");
    if(ck.Checked) //若选中执行删除操作
    {
    //int s = Convert.ToInt32(gvTest.DataKeys[i].Value);
    int s =int.Parse(GwPage.DataKeys[i].Value.ToString());//获取主键值
    string sql ="delete from tb_News where ID = '"+ s +"'";
    result
    = DB.DelRowByOne(sql);
    result
    += result;
    }
    }
    Gw_Bind();
    Response.Write(
    "<script>alert('批量删除"+ result +"条记录!')</script>");
    }
    //保存页面为EXCEL
    protectedvoid PageToExcel_Click(object sender, EventArgs e)
    {

    Response.Clear();
    Response.Buffer
    =true;
    Response.AppendHeader(
    "Content-Disposition", "attachment;filename=FileName.xls");
    Response.ContentEncoding
    = System.Text.Encoding.UTF8;
    Response.ContentType
    ="application/vnd.ms-excel";
    this.EnableViewState =false;
    }
    //导出GridView数据到Excel表中
    publicoverridevoid VerifyRenderingInServerForm(Control control)
    {

    }
    protectedvoid GridToExcel_Click(object sender, EventArgs e)
    {
    Response.Clear();
    Response.AddHeader(
    "content-disposition","attachment;filename=FileName.xls");
    Response.Charset
    ="gb2312";
    Response.ContentType
    ="application/vnd.ms-excel";//设置文件输出类型为Excel文件
    StringWriter sw =new StringWriter();
    HtmlTextWriter htmlWrite
    =new HtmlTextWriter(sw);
    GwPage.AllowPaging
    =false;
    Gw_Bind();
    GwPage.RenderControl(htmlWrite);
    Response.Write(sw.ToString());
    Response.End();
    GwPage.AllowPaging
    =true;
    Gw_Bind();
    }
    //插入一条记录
    protectedvoid btnInsert_Click(object sender, EventArgs e)
    {
    string NewsTitle = txtNewsTitle.Text;
    string NewsContent = txtNewsContent.Text;
    DateTime FBDate
    = DateTime.Parse(txtFBDate.Text);
    string sql ="insert into tb_News(NewsTitle,NewsContent,FBDate)"
    +"values('"+ NewsTitle +"','"+ NewsContent +"','"+ FBDate +"')";
    int result = DB.InSertRowByOne(sql);
    Gw_Bind();
    Response.Write(
    "<script>alert('插入"+ result +"条记录!')</script>");
    }
    }
    }

    下载示例链接:GridViewPager.rar

  • 相关阅读:
    leetcode刷题四<寻找两个有序数组的中位数>
    leetcode刷题第三天<无重复字符的最长子串>
    leetcode刷题第二天<两数相加>
    leetcode刷题第一日<两数和问题>
    sqlalchemy.exc.ProgrammingError: (pymysql.err.ProgrammingError)
    flask微电影系统开发中上下文处理器
    gdb解决字符串打印果断措施
    邻接表
    Jarvis OJ 一些简单的re刷题记录和脚本
    windows控件理论学习
  • 原文地址:https://www.cnblogs.com/lucky_hu/p/2174615.html
Copyright © 2011-2022 走看看