asp.net Ô´Âë±£´æ ÓóÌÐò·ÖÒ³

¡¡¡¡Ô´Â룺

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡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>