using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;

namespace flash
{
	/// <summary>
	/// Pager 的摘要说明。
	/// </summary>
	public class Pager : Control
	{
		private string _UrlFormat;
		private int _PageSize;
		private int _RecordCount;
		private int _PageCount = 5;

		/// <summary>
		/// 连接格式
		/// </summary>
		public string UrlFormat
		{
			get
			{
				return _UrlFormat;
			}
			set
			{
				_UrlFormat = value;
			}
		}

		/// <summary>
		/// 页长度
		/// </summary>
		public int PageSize
		{
			get
			{
				return _PageSize;
			}
			set
			{
				_PageSize = value;
			}
		}

		/// <summary>
		/// 当前页码
		/// </summary>
		public int PageIndex
		{
			get
			{
				string Pageindex = HttpContext.Current.Request.QueryString["pc"];
				if ( Pageindex != null )
				{
					return int.Parse(Pageindex);
				}
				return 1;
			}
		}

		/// <summary>
		/// 总记录数
		/// </summary>
		public int RecordCount
		{
			get
			{
				return _RecordCount;
			}
			set
			{
				_RecordCount = value;
			}
		}

		/// <summary>
		/// 两边显示个数
		/// </summary>
		public int PageCount
		{
			get
			{
				return _PageCount;
			}
			set
			{
				_PageCount = value;
			}
		}

		protected override void Render(HtmlTextWriter writer)
		{
			int SumPage = (RecordCount + PageSize - 1)/PageSize;

			int start = PageIndex - PageCount;
			int end = PageIndex + PageCount;

			//以PageIndex为中心，前后个显示Page个页码导航
			if (SumPage>(PageCount*2+1))
			{
				if (start<1)
				{
					start = 1;
					end = start + 10;
				}
				else if (end>SumPage)
				{
					start = SumPage - 10;
					end = SumPage;
				}
			}
			else
			{
				start = 1;
				end = SumPage;
			}
   


			string tmp = "<a href=\"" + UrlFormat + "\">[{0}]</a>";
			StringBuilder sb = new StringBuilder();
			if (PageIndex > 1 && RecordCount > 0)
			{
				sb.Append(string.Format("<a href=\"" + UrlFormat + "\">首页</a>", 1));
				sb.Append(string.Format("&nbsp;<a href=\"" + UrlFormat + "\">上一页</a>", PageIndex - 1));
			}
			for (int i = start; i <= end; i++)
			{
				sb.Append("&nbsp;");
				if (i==PageIndex)
				{
					sb.Append("[" + PageIndex.ToString() + "]");
				}
				else
				{
					sb.Append(string.Format(tmp, i));
				}
			}
			if (PageIndex < SumPage)
			{
				sb.Append(string.Format("&nbsp;<a href=\"" + UrlFormat + "\">下一页</a>", PageIndex + 1));
				sb.Append(string.Format("&nbsp;<a href=\"" + UrlFormat + "\">尾页</a>", SumPage));
			}
			writer.Write(sb.ToString());
		}

	}
}

