¡¡¡¡Ô´Â룺
¡¡¡¡
¡¡¡¡namespace Alex
¡¡¡¡{
¡¡¡¡public class PageTools
¡¡¡¡{
¡¡¡¡/// <summary>
¡¡¡¡/// ±íÃû³Æ
¡¡¡¡/// </summary>
¡¡¡¡private string tableName;
¡¡¡¡public string TableName
¡¡¡¡{
¡¡¡¡get { return tableName; }
¡¡¡¡set { tableName = value; }
¡¡¡¡}
¡¡¡¡/// <summary>
¡¡¡¡/// ·µ»ØµÄÁÐÃû
¡¡¡¡/// </summary>
¡¡¡¡private string returnColumns;
¡¡¡¡public string ReturnColumns
¡¡¡¡{
¡¡¡¡get { return returnColumns; }
¡¡¡¡set { returnColumns = value; }
¡¡¡¡}
¡¡¡¡/// <summary>
¡¡¡¡/// Ìõ¼þ
¡¡¡¡/// </summary>
¡¡¡¡private string where;
¡¡¡¡public string Where
¡¡¡¡{
¡¡¡¡get { return where; }
¡¡¡¡set { where = value; }
¡¡¡¡}
¡¡¡¡/// <summary>
¡¡¡¡/// ÅÅÐòÁÐ
¡¡¡¡/// </summary>
¡¡¡¡private string orderColumnName;
¡¡¡¡public string OrderColumnName
¡¡¡¡{
¡¡¡¡get { return orderColumnName; }
¡¡¡¡set { orderColumnName = value; }
¡¡¡¡}
¡¡¡¡/// <summary>
¡¡¡¡/// ÅÅÐò£¬trueΪ½µÐò
¡¡¡¡/// </summary>
¡¡¡¡private Boolean orderDesc;
¡¡¡¡public Boolean OrderDesc
¡¡¡¡{
¡¡¡¡get { return orderDesc; }
¡¡¡¡set { orderDesc = value; }
¡¡¡¡}
¡¡¡¡/// <summary>
¡¡¡¡/// Ö÷¼ü
¡¡¡¡/// </summary>
¡¡¡¡private string keyColumnName;
¡¡¡¡public string KeyColumnName
¡¡¡¡{
¡¡¡¡get { return keyColumnName; }
¡¡¡¡set { keyColumnName = value; }
¡¡¡¡}
¡¡¡¡/// <summary>
¡¡¡¡/// Ò³Ãæ´óС
¡¡¡¡/// </summary>
¡¡¡¡private Int32 pageSize;
¡¡¡¡public Int32 PageSize
¡¡¡¡{
¡¡¡¡get { return pageSize; }
¡¡¡¡set { pageSize = value; }
¡¡¡¡}
¡¡¡¡/// <summary>
¡¡¡¡/// µÚ¼¸Ò³
¡¡¡¡/// </summary>
¡¡¡¡private Int32 pageIndex;
¡¡¡¡public Int32 PageIndex
¡¡¡¡{
¡¡¡¡get { return pageIndex; }
¡¡¡¡set { pageIndex = value; }
¡¡¡¡}
¡¡¡¡/// <summary>
¡¡¡¡/// SQL²ÎÊý
¡¡¡¡/// </summary>
¡¡¡¡private SqlParameter[] whereParams;
¡¡¡¡public SqlParameter[] WhereParams
¡¡¡¡{
¡¡¡¡get { return whereParams; }
¡¡¡¡set { whereParams = value; }
¡¡¡¡}
¡¡¡¡/// <param name="TableName"></param>
¡¡¡¡/// <param name="ReturnColumns"></param>
¡¡¡¡/// <param name="Where">Ìõ¼þ</param>
¡¡¡¡/// <param name="OrderColumnName">ÅÅÐòÁÐ</param>
¡¡¡¡/// <param name="OrderDesc">ÅÅÐò£¬trueΪ½µÐò</param>
¡¡¡¡/// <param name="KeyColumnName">Ö÷¼ü</param>
¡¡¡¡/// <param name="PageSize">Ò³Ãæ´óС</param>
¡¡¡¡/// <param name="PageIndex">µÚ¼¸Ò³</param>
¡¡¡¡/// <param name="WhereParams">SQL²ÎÊý</param>
¡¡¡¡public PageTools(string tableName, string returnColumns, string where, string orderColumnName, Boolean orderDesc,
¡¡¡¡string keyColumnName, Int32 pageSize, Int32 pageIndex, params SqlParameter[] whereParams)
¡¡¡¡{
¡¡¡¡this.TableName = tableName;
¡¡¡¡this.ReturnColumns = returnColumns;
¡¡¡¡this.Where = where;
¡¡¡¡this.OrderColumnName = orderColumnName;
¡¡¡¡this.OrderDesc = orderDesc;
¡¡¡¡this.KeyColumnName = keyColumnName;
¡¡¡¡this.PageSize = pageSize;
¡¡¡¡this.PageIndex = pageIndex;
¡¡¡¡this.WhereParams = WhereParams;
¡¡¡¡}
¡¡¡¡public PageTools() { }
¡¡¡¡public DataTable RetrievePagerData()
¡¡¡¡{
¡¡¡¡if (pageIndex == 1)
¡¡¡¡{
¡¡¡¡return RetrieveTopData();
¡¡¡¡}
¡¡¡¡else
¡¡¡¡{
¡¡¡¡string sql = string.Format("select top {0} {1} from {2} where {3} and {6} not in ( select top {7} {6} from {2} where {3} order by {4} {5} ) order by {4} {5}", pageSize, returnColumns, tableName, where, orderColumnName, orderDesc == true ? "desc" : string.Empty, keyColumnName, pageSize * (pageIndex - 1));
¡¡¡¡return DbHelperSQL.Query(sql, CheckNull(whereParams)).Tables[0];
¡¡¡¡}
¡¡¡¡}
¡¡¡¡/// <summary>
¡¡¡¡/// »ñÈ¡Êý¾ÝµÄÌõÊý
¡¡¡¡/// </summary>
¡¡¡¡/// <param name="TableName"></param>
¡¡¡¡/// <param name="Where"></param>
¡¡¡¡/// <param name="WhereParams"></param>
¡¡¡¡/// <returns></returns>
¡¡¡¡public Int32 RetrieveDataCount()
¡¡¡¡{
¡¡¡¡string sql = string.Format("select count(*) from {0} where {1}" , tableName, where);
¡¡¡¡Int32 result = (Int32)DbHelperSQL.GetSingle(sql, CheckNull(whereParams));
¡¡¡¡return result;
¡¡¡¡}
¡¡¡¡/// <summary>
¡¡¡¡/// »ñÈ¡µÚÒ»Ò³
¡¡¡¡/// </summary>
¡¡¡¡/// <param name="top"></param>
¡¡¡¡/// <param name="TableName"></param>
¡¡¡¡/// <param name="ReturnColumns"></param>
¡¡¡¡/// <param name="Where"></param>
¡¡¡¡/// <param name="OrderColumnName"></param>
¡¡¡¡/// <param name="OrderDesc"></param>
¡¡¡¡/// <param name="WhereParams"></param>
¡¡¡¡/// <returns></returns>
¡¡¡¡public DataTable RetrieveTopData()
¡¡¡¡{
¡¡¡¡string sql = string.Format("select top {0} {1} from {2} where {3} order by {4} {5}", pageSize, returnColumns, tableName, where, orderColumnName, orderDesc == true ? "desc" : string.Empty);
¡¡¡¡return DbHelperSQL.Query(sql, whereParams).Tables[0];
¡¡¡¡}
¡¡¡¡/// <summary>
¡¡¡¡/// ÒÆ³ý¿Õ²ÎÊý
¡¡¡¡/// </summary>
¡¡¡¡/// <param name="WhereParams"></param>
¡¡¡¡/// <returns></returns>
¡¡¡¡private SqlParameter[] CheckNull(SqlParameter[] paras)
¡¡¡¡{
¡¡¡¡if (paras == null)
¡¡¡¡{
¡¡¡¡return null;
¡¡¡¡}
¡¡¡¡List<SqlParameter> list = new List<SqlParameter>();
¡¡¡¡foreach (SqlParameter para in paras)
¡¡¡¡{
¡¡¡¡if (para != null) list.Add(para);
¡¡¡¡}
¡¡¡¡return list.ToArray();
¡¡¡¡}
¡¡¡¡}
¡¡¡¡}
¡¡¡¡Ò³Ãæºǫ́£º
¡¡¡¡
¡¡¡¡public partial class _Default : System.Web.UI.Page
¡¡¡¡{
¡¡¡¡protected void Page_Load(object sender, EventArgs e)
¡¡¡¡{
¡¡¡¡recordCount = page.RetrieveDataCount();
¡¡¡¡totalPages = (int)(Math.Ceiling((double)recordCount / (double)page.PageSize));
¡¡¡¡if (!IsPostBack)
¡¡¡¡{
¡¡¡¡BindData();
¡¡¡¡}
¡¡¡¡}
¡¡¡¡Alex.PageTools page = new Alex.PageTools("Test", "*", "1=1", "USER_Account", false, "USER_Account", 10, 1, null);
¡¡¡¡int recordCount;
¡¡¡¡public int totalPages;
¡¡¡¡private void BindData()
¡¡¡¡{
¡¡¡¡int pageIndex = SmartGridView1.PageIndex;
¡¡¡¡if(totalPages>0)
¡¡¡¡{
¡¡¡¡if(pageIndex>totalPages-1)
¡¡¡¡{
¡¡¡¡pageIndex=totalPages-1;
¡¡¡¡}
¡¡¡¡}
¡¡¡¡else
¡¡¡¡{
¡¡¡¡pageIndex=0;
¡¡¡¡}
¡¡¡¡SmartGridView1.PageIndex=pageIndex;
¡¡¡¡page.PageIndex=pageIndex+1;
¡¡¡¡SmartGridView1.DataSource = page.RetrievePagerData();
¡¡¡¡SmartGridView1.DataBind();
¡¡¡¡if (this.SmartGridView1.PageIndex == 0)
¡¡¡¡{
¡¡¡¡this.btnFirst.Enabled = false;
¡¡¡¡this.btnPrev.Enabled = false;
¡¡¡¡if (totalPages == 1)
¡¡¡¡{
¡¡¡¡this.btnLast.Enabled = false;
¡¡¡¡this.btnNext.Enabled = false;
¡¡¡¡}
¡¡¡¡}
¡¡¡¡else if (this.SmartGridView1.PageIndex == totalPages - 1)
¡¡¡¡{
¡¡¡¡this.btnLast.Enabled = false;
¡¡¡¡this.btnNext.Enabled = false;
¡¡¡¡}
¡¡¡¡this.lblpagesum.Text = totalPages.ToString();
¡¡¡¡this.lblpage.Text = (pageIndex + 1).ToString();
¡¡¡¡this.lblrowscount.Text = recordCount.ToString();
¡¡¡¡}
¡¡¡¡public void NavigateToPage(object sender, CommandEventArgs e)
¡¡¡¡{
¡¡¡¡btnFirst.Enabled = true;
¡¡¡¡btnPrev.Enabled = true;
¡¡¡¡btnNext.Enabled = true;
¡¡¡¡btnLast.Enabled = true;
¡¡¡¡string pageinfo = e.CommandArgument.ToString();
¡¡¡¡switch (pageinfo)
¡¡¡¡{
¡¡¡¡case "Prev":
¡¡¡¡if (this.SmartGridView1.PageIndex > 0)
¡¡¡¡{
¡¡¡¡this.SmartGridView1.PageIndex -= 1;
¡¡¡¡}
¡¡¡¡break;
¡¡¡¡case "Next":
¡¡¡¡if (this.SmartGridView1.PageIndex < (totalPages - 1))
¡¡¡¡{
¡¡¡¡this.SmartGridView1.PageIndex += 1;
¡¡¡¡}
¡¡¡¡break;
¡¡¡¡case "First":
¡¡¡¡this.SmartGridView1.PageIndex = 0;
¡¡¡¡break;
¡¡¡¡case "Last":
¡¡¡¡this.SmartGridView1.PageIndex = totalPages - 1;
¡¡¡¡break;
¡¡¡¡}
¡¡¡¡if (this.SmartGridView1.PageIndex == 0)
¡¡¡¡{
¡¡¡¡btnFirst.Enabled = false;
¡¡¡¡btnPrev.Enabled = false;
¡¡¡¡if (totalPages == 1)
¡¡¡¡{
¡¡¡¡btnLast.Enabled = false;
¡¡¡¡btnNext.Enabled = false;
¡¡¡¡}
¡¡¡¡}
¡¡¡¡else if (this.SmartGridView1.PageIndex == totalPages - 1)
¡¡¡¡{
¡¡¡¡btnLast.Enabled = false;
¡¡¡¡btnNext.Enabled = false;
¡¡¡¡}
¡¡¡¡BindData();
¡¡¡¡}
¡¡¡¡protected void gobtnClick(object sender, EventArgs e)
¡¡¡¡{
¡¡¡¡int goPageIndex = Convert.ToInt32(this.goCount.Text.Trim());
¡¡¡¡if (goPageIndex > 0)
¡¡¡¡{
¡¡¡¡if (goPageIndex >= totalPages)
¡¡¡¡{
¡¡¡¡this.SmartGridView1.PageIndex = totalPages - 1;
¡¡¡¡}
¡¡¡¡else
¡¡¡¡{
¡¡¡¡this.SmartGridView1.PageIndex = goPageIndex - 1;
¡¡¡¡}
¡¡¡¡}
¡¡¡¡else if(goPageIndex <=0)
¡¡¡¡{
¡¡¡¡this.SmartGridView1.PageIndex = 0;
¡¡¡¡}
¡¡¡¡if (this.SmartGridView1.PageIndex == 0)
¡¡¡¡{
¡¡¡¡btnFirst.Enabled = false;
¡¡¡¡btnPrev.Enabled = false;
¡¡¡¡btnLast.Enabled = true;
¡¡¡¡btnNext.Enabled = true;
¡¡¡¡if (totalPages == 1)
¡¡¡¡{
¡¡¡¡btnLast.Enabled = false;
¡¡¡¡btnNext.Enabled = false;
¡¡¡¡}
¡¡¡¡}
¡¡¡¡else if (this.SmartGridView1.PageIndex == totalPages - 1)
¡¡¡¡{
¡¡¡¡btnLast.Enabled = false;
¡¡¡¡btnNext.Enabled = false;
¡¡¡¡btnFirst.Enabled = true;
¡¡¡¡btnPrev.Enabled = true;
¡¡¡¡}
¡¡¡¡else
¡¡¡¡{
¡¡¡¡btnLast.Enabled = true;
¡¡¡¡btnFirst.Enabled = true;
¡¡¡¡btnNext.Enabled = true;
¡¡¡¡btnPrev.Enabled = true;
¡¡¡¡}
¡¡¡¡BindData();
¡¡¡¡}
¡¡¡¡Ò³ÃæÇ°Ì¨£º
¡¡¡¡´úÂë
¡¡¡¡
¡¡¡¡<%@ Page Language="C#" Theme="msn_blue" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
¡¡¡¡<%@ Register Assembly="SmartGridView" Namespace="BOSSWWebUI.SmartGridView" TagPrefix="uc1" %>
¡¡¡¡<!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 runat="server">
¡¡¡¡<title></title>
¡¡¡¡</head>
¡¡¡¡<body>
¡¡¡¡<script type="text/javascript">
¡¡¡¡function validate() {
¡¡¡¡var gocount=document.getElementById("goCount").value;
¡¡¡¡if(gocount=="")
¡¡¡¡{
¡¡¡¡alert("ÇëÏÈÌîдÄãÒªµ¼º½µÄÒ³Ãæ");
¡¡¡¡return false;
¡¡¡¡}
¡¡¡¡var result;
¡¡¡¡if(isNaN(gocount))
¡¡¡¡{
¡¡¡¡alert("ÇëÊäÈëºÏ·¨µÄÊý×Ö");
¡¡¡¡document.getElementById("goCount").value="";
¡¡¡¡return false;
¡¡¡¡}
¡¡¡¡if(parseInt(gocount)<=0|| parseInt(gocount)><%=this.totalPages %>)
¡¡¡¡{
¡¡¡¡alert("Êý×ÖÒç³ö");
¡¡¡¡document.getElementById("goCount").value="";
¡¡¡¡return false;
¡¡¡¡}
¡¡¡¡return true;
¡¡¡¡}
¡¡¡¡</script>
¡¡¡¡<form id="form1" runat="server">
¡¡¡¡<div>
¡¡¡¡<table cellspacing="0" cellpadding="0" width="98%" align="center" border="0">
¡¡¡¡<tr id="TrGrid" runat="server">
¡¡¡¡<td align="left">
¡¡¡¡¡ð Ò³´Î£º<asp:Label ID="lblpage" runat="server" ></asp:Label>/
¡¡¡¡<asp:Label ID="lblpagesum" runat="server"></asp:Label>£¬¹²£º<asp:Label
¡¡¡¡ID="lblrowscount" runat="server"></asp:Label>Ìõ</td>
¡¡¡¡<td align="right">
¡¡¡¡<asp:LinkButton ID="btnFirst" runat="server" OnCommand="NavigateToPage"
¡¡¡¡CommandArgument="First" CommandName="Pager" Text="Ê× Ò³">[Ê× Ò³]</asp:LinkButton><asp:LinkButton
¡¡¡¡ID="btnPrev" runat="server" CommandArgument="Prev" OnCommand="NavigateToPage"
¡¡¡¡CommandName="Pager" Text="ÉÏÒ»Ò³">[ÉÏÒ»Ò³]</asp:LinkButton><asp:LinkButton ID="btnNext"
¡¡¡¡runat="server" CommandArgument="Next" OnCommand="NavigateToPage"
¡¡¡¡CommandName="Pager" Text="ÏÂÒ»Ò³">[ÏÂÒ»Ò³]</asp:LinkButton><asp:LinkButton ID="btnLast"
¡¡¡¡runat="server" CommandArgument="Last" OnCommand="NavigateToPage"
¡¡¡¡CommandName="Pager" Text="β Ò³" >[β Ò³]</asp:LinkButton>
¡¡¡¡<asp:TextBox ID=goCount runat="server" Width="50px"></asp:TextBox>
¡¡¡¡<asp:Button ID="gobtn" runat="server" Text="go" OnClientClick="return validate();" OnClick="gobtnClick" /></td>
¡¡¡¡</tr>
¡¡¡¡</table>
¡¡¡¡<table cellspacing="0" cellpadding="0" width="98%" align="center" border="0">
¡¡¡¡<tr>
¡¡¡¡<td>
¡¡¡¡<uc1:SmartGridView ID="SmartGridView1" SkinID="blue" runat="server"
¡¡¡¡PagingStyle="Default"
¡¡¡¡CssClassMouseOver="grid_over" EnableViewState="False"
¡¡¡¡AutoGenerateColumns="False"
¡¡¡¡Width="100%" currentLanguage="">
¡¡¡¡<Columns>
¡¡¡¡<asp:TemplateField>
¡¡¡¡<headertemplate>
¡¡¡¡<asp:checkbox id="HeadCheckBox" runat="server" />
¡¡¡¡</headertemplate>
¡¡¡¡<itemtemplate>
¡¡¡¡<asp:checkbox id="checkitem" runat="server" __designer:wfdid="w1"></asp:checkbox>
¡¡¡¡</itemtemplate>
¡¡¡¡<headerstyle cssclass="tdcell" />
¡¡¡¡<itemstyle horizontalalign="Center" width="5px" cssclass="tdcell" />
¡¡¡¡</asp:TemplateField>
¡¡¡¡<asp:BoundField DataField="USER_Account" HeaderText="Óû§ÕʺÅ" SortExpression="USER_Account">
¡¡¡¡<headerstyle cssclass="tdcell" />
¡¡¡¡<itemstyle horizontalalign="Center" cssclass="tdcell" />
¡¡¡¡</asp:BoundField>
¡¡¡¡<asp:BoundField DataField="USER_DspName" HeaderText="ÏÔʾÃû³Æ" SortExpression="USER_DspName">
¡¡¡¡<headerstyle cssclass="tdcell" />
¡¡¡¡<itemstyle horizontalalign="Center" cssclass="tdcell" />
¡¡¡¡</asp:BoundField>
¡¡¡¡<asp:BoundField DataField="USER_DspEngName" HeaderText="Ó¢ÎÄÃû" SortExpression="USER_DspEngName" >
¡¡¡¡<headerstyle cssclass="tdcell" />
¡¡¡¡<itemstyle cssclass="tdcell" horizontalalign="Center" />
¡¡¡¡</asp:BoundField>
¡¡¡¡<asp:BoundField DataField="USER_HRID" HeaderText="Ô±¹¤ºÅ" SortExpression="USER_HRID" >
¡¡¡¡<headerstyle cssclass="tdcell" />
¡¡¡¡<itemstyle cssclass="tdcell" horizontalalign="Center" />
¡¡¡¡</asp:BoundField>
¡¡¡¡<asp:BoundField DataField="USER_Email" HeaderText="ÓʼþµØÖ·" SortExpression="USER_Email">
¡¡¡¡<headerstyle cssclass="tdcell" />
¡¡¡¡<itemstyle horizontalalign="Center" cssclass="tdcell" />
¡¡¡¡</asp:BoundField>
¡¡¡¡<asp:BoundField DataField="USER_Title" HeaderText="Ö° ³Æ" SortExpression="USER_Title">
¡¡¡¡<headerstyle cssclass="tdcell" />
¡¡¡¡<itemstyle horizontalalign="Center" cssclass="tdcell" />
¡¡¡¡</asp:BoundField>
¡¡¡¡<asp:BoundField DataField="USER_Tel" HeaderText="µç »°" SortExpression="USER_Tel">
¡¡¡¡<headerstyle cssclass="tdcell" />
¡¡¡¡<itemstyle horizontalalign="Center" cssclass="tdcell" />
¡¡¡¡</asp:BoundField>
¡¡¡¡<asp:BoundField DataField="USER_Active" HeaderText="ÊÇ·ñÓÐЧ" SortExpression="USER_Active">
¡¡¡¡<headerstyle cssclass="tdcell" />
¡¡¡¡<itemstyle horizontalalign="Center" cssclass="tdcell" />
¡¡¡¡</asp:BoundField>
¡¡¡¡<asp:BoundField DataField="USER_Major" HeaderText="רҵ" SortExpression="USER_Major" >
¡¡¡¡<headerstyle cssclass="tdcell" horizontalalign="Center" />
¡¡¡¡<itemstyle cssclass="tdcell" horizontalalign="Center" />
¡¡¡¡</asp:BoundField>
¡¡¡¡</Columns>
¡¡¡¡<HeaderStyle CssClass="thHead" />
¡¡¡¡<FixRowCol TableHeight="" TableWidth="" />
¡¡¡¡<RowStyle CssClass="tdcell" />
¡¡¡¡</uc1:SmartGridView>
¡¡¡¡</td></tr>
¡¡¡¡</table>
¡¡¡¡</div>
¡¡¡¡</form>
¡¡¡¡</body>
¡¡¡¡</html>