<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="page.ascx.cs" Inherits="Web.Control.WebUserControl1" %>
<link href="../CSS/Stylesheet1.css" type="text/css" rel="Stylesheet" />
<script type="text/javascript">
function validatePage()
{
var txt=document.getElementById("<%=this.ClientID %>_txtPage");
if( txt.value=="")
{
alert("请输入页数!");
txt.focus();
return false;
}
return true;
}
</script>
<div class="page">
分页;总数
<asp:Label ID="labTotal" runat="server" ForeColor="Blue"></asp:Label>
条 页次:
<asp:Label ID="labCurpage" runat="server" ForeColor="Red"></asp:Label>/<asp:Label ID="labPages" runat="server"></asp:Label>
<span id="text" runat="server">
<asp:LinkButton ID="lnkbtnFirst" CommandName="first" runat="server" OnClick="LinkButton_Click">首页</asp:LinkButton>
<asp:LinkButton ID="lnkbtnPrevious" CommandName="Previous" runat="server" OnClick="LinkButton_Click" >上一页</asp:LinkButton>
<asp:LinkButton ID="lnkbtnNext" CommandName="next" runat="server" OnClick="LinkButton_Click" >下一页</asp:LinkButton>
<asp:LinkButton ID="lnkbtnLast" CommandName="last" runat="server" OnClick="LinkButton_Click">最后一页</asp:LinkButton>
</span>
<span id="pre" runat="server">
<asp:LinkButton ID="lnkbtnF" CommandArgument="first" runat="server" OnClick="lnkbtnTen_Click"><<</asp:LinkButton>
<asp:LinkButton ID="lnkbtnP" CommandArgument="previous" runat="server" OnClick="lnkbtnTen_Click"><</asp:LinkButton>
</span>
<span id="number" runat="server" style=" text-align:center;">
<asp:LinkButton ID="lnkbtn0" runat="server" OnClick="lnkbtn_Click"></asp:LinkButton>
<asp:LinkButton ID="lnkbtn1" runat="server" OnClick="lnkbtn_Click"></asp:LinkButton>
<asp:LinkButton ID="lnkbtn2" runat="server" OnClick="lnkbtn_Click"></asp:LinkButton>
<asp:LinkButton ID="lnkbtn3" runat="server" OnClick="lnkbtn_Click"></asp:LinkButton>
<asp:LinkButton ID="lnkbtn4" runat="server" OnClick="lnkbtn_Click"></asp:LinkButton>
<asp:LinkButton ID="lnkbtn5" runat="server" OnClick="lnkbtn_Click"></asp:LinkButton>
<asp:LinkButton ID="lnkbtn6" runat="server" OnClick="lnkbtn_Click"></asp:LinkButton>
<asp:LinkButton ID="lnkbtn7" runat="server" OnClick="lnkbtn_Click"></asp:LinkButton>
<asp:LinkButton ID="lnkbtn8" runat="server" OnClick="lnkbtn_Click"></asp:LinkButton>
<asp:LinkButton ID="lnkbtn9" runat="server" OnClick="lnkbtn_Click"></asp:LinkButton>
</span>
<span id="next" runat="server">
<asp:LinkButton ID="lnkbtnNT" runat="server" CommandArgument="nt" OnClick="lnkbtnTen_Click">></asp:LinkButton>
<asp:LinkButton ID="lnkbtnLT" runat='server' CommandArgument="lt" OnClick="lnkbtnTen_Click">>></asp:LinkButton>
</span>
<asp:TextBox ID="txtPage" MaxLength="5" runat="server" Text="20" Width="40px" onkeyup="value=value.replace(/[^/d]/g,'');"></asp:TextBox>
<asp:LinkButton ID="lnkbtnSou" runat="server" OnClientClick="return validatePage()" OnClick="lnkbtnGoto_Click" >条/每页</asp:LinkButton>
</div>
--------以上是源代码
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
namespace Web.Control
{
public partial class WebUserControl1 : System.Web.UI.UserControl
{
int total;//总记录
int curpage;//当前页
int pagesize ;//每页记录数
int totalpage;//总页数
public enum Display { Text, Num };
Display showtype = Display.Text;
string dataid;
string connectionstring;
ArrayList arrPra = null;
public bool IsProcrdure
{
set { ViewState["flag"] = value; }
}
public Display ShowType
{
set { showtype = value; }
}
public string Dataid
{
get { return dataid; }
set { dataid = value; }
}
public int PageSize
{
get { return pagesize; }
set { pagesize = value; }
}
public int Total
{
get { return total; }
set { total = value; }
}
public string Query
{
set { ViewState["query"] = value; }
get { return ViewState["query"].ToString(); }
}
public int CurPage
{
get { return Convert.ToInt32(this.labCurpage.Text); }
}
public string ConnectionString
{
set { this.connectionstring = value; }
get { return connectionstring; }
}
public SqlParameter[] Param
{
set
{
arrPra = new ArrayList();
foreach (SqlParameter par in value)
{
Hashtable hb = new Hashtable();
hb.Add("name", par.ParameterName);
hb.Add("value", par.Value);
arrPra.Add(hb);
}
ViewState["para"] = arrPra;
}
}
//首页加载
protected void Page_Load(object sender, EventArgs e)
{
this.Visible = true;
if (showtype == Display.Num)
{
text.Visible = false;
number.Visible = true;
pre.Visible = true;
next.Visible = true;
}
else
{
text.Visible = true;
number.Visible = false;
pre.Visible = false;
next.Visible = false;
}
}
public void SetCurPage(int num)
{
labCurpage.Text = num.ToString();
if (showtype == Display.Num)
{
lnkbtn0.Text = num.ToString();
}
}
protected void LinkButton_Click(object sender, EventArgs e)
{
switch ((sender as LinkButton).CommandName)
{
case"first":
{
labCurpage.Text = "1";
break;
}
case "Previous":
{
labCurpage.Text = Convert.ToInt32(labCurpage.Text) > 1 ? (Convert.ToInt32(labCurpage.Text) - 1).ToString() : "1";
break;
}
case "next":
{
labCurpage.Text = Convert.ToInt32(labCurpage.Text) < Convert.ToInt32(labPages.Text) ? (Convert.ToInt32(labCurpage.Text) + 1).ToString() : labPages.Text;
break;
}
case "last":
{
labCurpage.Text = labPages.Text;
break;
}
default:
break;
}
}
protected void Page_PreRender(object sender, EventArgs e)
{
if (labCurpage.Text == "")
{
curpage = 1;
}
else
{
curpage = Convert.ToInt32(labCurpage.Text);
}
if (ViewState["query"] == null || ViewState["query"].ToString()==string.Empty)
{
this.Visible = false;
return;
}
GetData(curpage);
if (total == 0)
{
this.Visible = false;
return;
}
else
{
this.Visible = true;
}
if (text.Visible == true)
{
if (curpage == 1 && totalpage > 1)
{
ChangeState(false, true);
}
else if (curpage == totalpage && totalpage>1)
{
ChangeState(true, false);
}
else if (totalpage == 1)
{
ChangeState(false, false);
}
else
{
ChangeState(true, true);
}
}
else
{
int startpage;
int endpage;
if (lnkbtn0.Text == "")
{
startpage = 1;
endpage = startpage + 9;
}
else
{
startpage = Convert.ToInt32(lnkbtn0.Text);
endpage = startpage + 9;
}
if (endpage > totalpage)
{
endpage = totalpage;
}
for (int i = 0; i <= 9; i++)
{
LinkButton lnkbtn = (this.FindControl("lnkbtn" + i) as LinkButton);
if (i + startpage <= endpage)
{
lnkbtn.Text = (i + startpage).ToString();
if (curpage == i + startpage)
{
lnkbtn.Enabled = false;
}
else
{
lnkbtn.Enabled = true;
}
}
else
{
lnkbtn.Enabled = false;
}
}
if (lnkbtn0.Text == "1")
{
pre.Visible = false;
}
else
{
pre.Visible = true;
}
if (lnkbtn9.Visible == false || Convert.ToInt16(lnkbtn9.Text) == totalpage)
next.Visible = false;
else
next.Visible = true;
}
labCurpage.Text = curpage.ToString();
labTotal.Text = total.ToString();
labPages.Text = totalpage.ToString();
}
private void ChangeState(bool b1, bool b2)
{
lnkbtnFirst.Enabled = b1;
lnkbtnPrevious.Enabled = b1;
lnkbtnNext.Enabled = b2;
lnkbtnLast.Enabled = b2;
}
private void GetData(int pagenum)
{
DataTable dt = new DataTable();
SqlConnection conn = new SqlConnection(Help.help.strConn);
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
if (ViewState["flag"] != null && (bool)ViewState["flag"] == true)
{
cmd.CommandType = CommandType.StoredProcedure;
if (ViewState["para"] != null)
{
foreach (object array in (ArrayList)ViewState["para"])
{
Hashtable htb = (Hashtable)array;
SqlParameter sqlpara=new SqlParameter(htb["name"].ToString(),htb["value"]);
cmd.Parameters.Add(sqlpara);
}
}
}
cmd.CommandText=ViewState["query"].ToString();
cmd.Connection.Open();
dt.Load(cmd.ExecuteReader());
cmd.Connection.Close();
total=dt.Rows.Count;
curpage = pagenum;
if (total % pagesize == 0)
{
totalpage = total / pagesize;
}
else
{
totalpage = total / pagesize + 1;
}
Bind(dt, pagenum);
}
private void Bind(DataTable dt, int pagenum)
{
object obj = this.Page.FindControl(dataid);
(obj as GridView).AllowPaging = true;
(obj as GridView).PagerSettings.Visible = false;
(obj as GridView).PageSize = pagesize;
(obj as GridView).PageIndex = pagenum - 1;
(obj as GridView).DataSource = dt;
(obj as GridView).DataBind();
}
protected void lnkbtnGoto_Click(object sender, EventArgs e)
{
pagesize = Convert.ToInt32(txtPage.Text);
}
protected void lnkbtn_Click(object sender, EventArgs e)
{
string pagenum = (sender as LinkButton).Text;
labCurpage.Text = pagenum;
}
protected void lnkbtnTen_Click(object sender, EventArgs e)
{
string ten = (sender as LinkButton).CommandArgument;
int pagenum = 1;
if (ten == "ft")
{
pagenum = 1;
}
else if (ten == "pt")
{
pagenum = Convert.ToInt32(lnkbtn0.Text) - 10;
}
else if (ten == "nt")
{
pagenum = Convert.ToInt32(lnkbtn0.Text) + 10;
}
else if (ten == "lt")
{
pagenum = Convert.ToInt32(labPages.Text) / 10 * 10 + 1;
}
lnkbtn0.Text = pagenum.ToString();
labCurpage.Text = pagenum.ToString();
}
}
}
-----以上是后台代码
<%@ Register Src="~/Control/page.ascx" TagName="control" TagPrefix="uc1" %>//在其它页面的引用
<div>
<uc1:control ID="control" runat="server" Dataid="GridBuyOrder" ConnectionString="conn" ShowType="Text" PageSize="5"/>
</div>
control.Query = "select * from V_BuyOrder"; //后台绑定代码(直接查寻)
control.IsProcrdure = true;(用存储过程的绑定代码)
control.Query="PROC_xxx"
5459

被折叠的 条评论
为什么被折叠?



