关于asp.net假分页的删除操作的随笔

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Index.aspx.cs"  Inherits="PagingTestDome1.Index"%>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>

<script src="js/jquery-1.6.2.min.js"></script>

<title></title>

<style type="text/css">

a{

     text-decoration:none;color:#686868;

}

a:hover{

color:#6287ef;

}

.page_set{

float:left;

margin-top:50px;

}

.table_content{

text-align:center;

}

.page_set a 

{

border:0.5px solid #999;

padding:1px 4px;

}

.page_set p

{

display:inline;

}

</style>

</head>

<body>

<form id="form1" runat="server">

<div>

<h3>假分页--删除</h3>

<asp:Repeater ID="rp_news" runat="server" OnItemDataBound="rp_news_ItemDataBound" OnItemCommad="rp_news_ItemCommand">

<HeaderTemplate>

 <table id="tableinfo" border="1px" style="border-collapse;"bordercolor="#eeeeee" cellpadding="2px" cellspacing="0">

<tr style="height:22px;background-color:#eeeeee;text-align:center;">

<th style="300px;font-weight:normal;">编号</th>

<th style="300px;font-weight:normal;">商品名</th>

<th style="300px ;font-weight:normal;">价格</th>

<th style="80px;font-weight:normal;">删除</th>

</tr>

<tbody id="trId">

</HeaderTemplate>

<ItemTemplate>

<asp:Panel ID="plItem" runat="server">

<tr style="height:17px;background-color:White;text-align:center;">

<asp:Label ID="lb_ID1" runat="server" Text='<%# Eval("id")%>'></asp:Label>

<td><asp:Label ID="lb_ID" runat="server" Text='<%# Eval("id")%'></aspx:Label></td>

<td><asp:Label ID="lb_name" runat="server" Text='<%# Eval("goodsName")%>'></asp:Label></td>

<td><asp:Label ID="lb_price" runat="server" Text='<%# Eval("price")%>'></asp:Label></td>

<td><asp:ImageButton ID="lbtDelete" ImageUrl="img/delete.png" runat="server" CommandName="Delete"/></td>

</tr>

</asp:Panel>

</ItemTemplate>

<FooterTemplate>

</tbody>

</table>

</FooterTemplate>

</asp:Repeater>

<div class="page_set">

<p id="pages"></p>

<p id="sjzl"></p>

<a href="#" id="btn_first">首页</a>

<a href="#" id="btn_previous">上一页</a>

<a href="#" id="btn_next">下一页</a>

<a href="#" id="btn_last">尾页</a>

<p>转到</p>

<input style="40px;height:16px;" maxlength="5" id="changePage"/>

<p>页</p>

<a href="#" id="btn_change">跳转</a>

</div>

<div class="clear"></div>

<script type="text/javascript">

var pageSize=5;//每页显示的记录条数

var curPage=0;//当前页

var lastPage;//最后页

var direct=0;//方向

var len;//总行数

var page;//总页数

var begin;

var end;

var cPage=0;

$(d0cument).ready(function display(){

len=$("#trId tr").length;//求这个表的总行数,剔除第一行介绍

page=len%pageSize==0?len/pageSize:Math.floor(len/pageSize)+1;//根据记录条数,计算页数

curPage=1;//设置当前为第一页

displayPage(1);//显示第一页

document.getElementById("pages").innerHTML="当前"+curPage+"/"+page+"页";//显示当前多少页

document.getElementById("sjzl").innerHTML="数据总量"+len+"";//显示数据量

$("#btn_first").click(function firstPage(){//首页

curPage=1;

direct=0;

displayPage();

});

$("#btn_previous").click(function frontPage(){//上一页

direct=-1;

displayPage();

});

$("#btn_next").click(function nextPage(){//下一页

direct=1;

displayPage();

});

$("#btn_last").click(function lastPage(){//尾页

curPage=page;

direct=0;

displayPage();

});

$("#btn_change").click(function changePage(){//转页

curPage=document.getElementById("changePage").value*1;

if(!/^[1-9]d*$/.test(curPage)){

alert("请输入正整数");

return;

}

if(curPage>page){

alert("超出数据页面");

return;

}

direct=0;

displayPage();

});

});

function displayPage(){

if(curPage<=1&&direct==-1){

direct=0;

alert("已经是第一页了");

return;

}

else if(curPage >=page&&direct==1){

direct=0;

alert("已经是最后一页了");

return;

}

lastPage=curPage;

//修复当len=1时,curpage计算+得0的bug

if(len>pageSize){

curPage=((curPage+direct+len)%len);

}

else{

curPage=1;

}

document.getElementById("pages").InnerHTML="当前"+curPage+"/"+page+"页";

begin=(curPage-1)*pageSize;//起始记录号

end=begin+1*pageSize-1;//末尾记录号

if(end>len)end=len;

$("#trId tr").hide();//首先,设置这行为隐藏

$("#trId tr").each(function (i){

if((i>=begin&&i<=end))

$(this).show();

});

}

</script>

</div>

</form>

</body>

</html>

 后台代码如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using DAL;

using BLL;

using Model;

namespace PagingTestDome1

{

public partial class Index:System.Web.UI.Page

{

protected void Page_Load(object sender,EventArgs e)

{

if(!IsPostBack){

Bind();

}

}

protected void Bind(){

BLL.tbl_goods goods=new BLL.tbl_goods();

IList<Model.tbl_goods> List=new List<Model.tbl_goods>();

List=goods.GetList();

rp_news.DataSource=List;

rp_news.DataBind();

}

protected void rp_news_ItemDataBound(object sender,RepeaterItemEventArgs e)

{

if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType=ListItemType.AlternatingItem)

{

Panel pn=(Panel)e.Item.FindControl("plItem");

Label id=(Label)pn.FindControl("lb_ID1");

Label name=(Label)pn.FindControl("lb_name");

id.Visible=false;

((ImageButton)e.Item.FindControl("lbtDelete")).Attributes.Add("onclick",string.Format("JavaScript:return confirm('你确认要删除{0}吗');",name.Text));

}

}

protected void rp_news_ItemCommand(object source,RepeaterCommandEventArgs e)

{

if(e.CommandName=="Delete")

{

Panel pn=(Panel)e.Item.FindControl("plItem");

Label id=(Label)pn.FindControl("lb_ID1");

int ID=Convert.ToInt32(id.Text);

BLL.tbl_goods goods=new BLL.tbl_goods();

goods.Delete(ID);

Response.Write("<script>alert('删除成功!!!')</Script>");

Bind();

}

}

}

这里的删除按钮是用得ImageButton,这是一个提交按钮,所以点击了之后页面会刷新。

在不能改动太大的前提下,要达到我所需要的效果。

有一个思路就是将当前的页码保存下来,点击删除按钮后,通过jQuery控制它跳到保存下来的页码的那一页

但是在前台页码中,分页处的代码都是html标签,不具有保存页码的功能,所以就需要改下前台的代码了。

将分页处的input标签:

<input style="40px;height:16px;"maxlength=“5“ id="changePage"/>

改为TextBox:

<aspx:TextBox ID="changePage" runat="server" Width="40" Height="16" MaxLength="5"></aspx:TextBox>

用asp.net所带的TextBox来保存页码就可以了

那么,分页的jQuery也需要改一下了

<script type="text/javascript">

var pageSize=5;

var curPage=0;

var lastPage;

var direct=0;

var len;

var page;

var begin;

var end;

var cPage=0;

$(document).ready(function display(){

len=$("#trId tr").length;

page=len%pageSize==0?len/pageSize:Math.floor(len/pageSize)+1;

if(document.getElementById("changePage").value*1==""){

curPage=1;

displayPage(1);

}

else{

curPage=document.getElementById("changePage").value*1;

displayPage(curPage);

}

document.getElementById("pages").innerHTML="当前"+curPage+"/"+page+"页";

document.getElementById("sjzl").innerHTML="数据总量"+len+"";

$("#btn_first").click(function firstPage(){

curPage=1;

direct=0;

displayPage();

$("#changePage").val(curPage);

});

$("#btn_previous").click(function frontPage(){

direct=1;

displayPage();

$("#changePage").val(curPage);

});

$("#btn_next").click(function nextPage(){

direct=1;

displayPage();

$("#changePage").val(curPage);

});

$("#btn_change").click(function lastPage(){

curPage=page;

direct=0;

displayPage();

$("#changePage").val(curPage);

});

$("#btn_change").click(function changePage(){

curPage=document.getElementById("changePage").value*1;

if(!/^[1-9]d*$/.test(curPage)){

alert("请输入正整数");

return;

}

if(curPage>page){

alert("超出数据页面");

return;

}

direct=0;

displayPage();

});

});

function displayPage(){

if(curPage<=1&&direct==-1){

direct=0;

alert("已经是第一页了");

return;

}

else if(curPage>=page&&direct==1){

direct=0;

alert("已经是最后一页了");

return;

}

lastPage=curPage;

//修复当len=1时,curPage计算得0的bug

if(len>pageSize){

curPage=((curPage+direct+len)%len);

}

else{

curPage=1;}

document.getElementById("pages").innerHTML="当前"+curPage+"/"+page+"页";

begin=(curPage-1)*pageSize;

eng=begin+1*pageSize-1;

if(end>len)end=len;

$("#trId tr).hide();

$("#trId tr").each(function(i){

if((i>=begin&&i<=end));

$(this).show();

});

}

</script>

原文地址:https://www.cnblogs.com/zzp0320/p/7054248.html