⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 show.aspx.cs

📁 《精通AJAX》光盘 要求: JDK1.4.2 以上版本 数据库采用MySQL 4.1.4 以上版本 服务器采用Tomcat 5 以上版本 开发工具采用Eclipse 3.0
💻 CS
字号:
using System;
using System.Data;
using System.Web.UI.WebControls;
using System.Text;

namespace book.pager
{
	/// <summary>
	/// show 的摘要说明。
	/// </summary>
	public class show : System.Web.UI.Page
	{
		protected int pageSize=5;//定义每页需要显示的记录数
		private void Page_Load(object sender, System.EventArgs e)
		{
			//获取查询字符串表示的页数,默认为1
			int page=1;
			//利用异常机制确保转换string到int类型不会出错
			try
			{
				page=Convert.ToInt32(Request.QueryString["page"]);
			}
			catch(Exception e1){}

			//获得查询条件
			string key=Request.QueryString["key"];
			if(key==null)key=string.Empty;
			//过滤特殊符号,避免SQL注入
			key=key.Replace("'","").Replace("\"","");

			//连接数据库并获得数据源
			System.Data.OleDb.OleDbConnection conn=new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("data.mdb"));
			conn.Open();
			System.Data.OleDb.OleDbCommand cmd=new System.Data.OleDb.OleDbCommand();
			cmd.Connection=conn;
			cmd.CommandText="select count(*) from info where title like '%"+key+"%'";
			int count=Convert.ToInt32(cmd.ExecuteScalar());
			
			
			//实现自定义的分页逻辑
			StringBuilder sb=new StringBuilder("select top "+pageSize.ToString()+" * from info where title like '%"+key+"%'");
			//如果不是第一页
			if(page>1)
			{
				sb.Append(" and id not in(select top "+(pageSize*(page-1)).ToString()+" id from info where title like '%"+key+"%' order by [date],id desc)");
			}
			sb.Append(" order by [date],id desc");

			//得到数据并填充到DataTable中
			DataTable dt=new DataTable();
			System.Data.OleDb.OleDbDataAdapter da=new System.Data.OleDb.OleDbDataAdapter(sb.ToString(),conn);
			da.Fill(dt);
			

			//创建DataGrid对象
			DataGrid dg=new DataGrid();
			dg.AllowPaging=false;
			dg.ShowFooter=false;
			dg.AutoGenerateColumns=false;
			BoundColumn bc;
			HyperLinkColumn hlc;

			//给DataGrid添加标题列
			hlc=new HyperLinkColumn();
			hlc.HeaderText="标题";
			hlc.DataTextField="title";
			hlc.DataNavigateUrlField="id";
			hlc.DataNavigateUrlFormatString="showInfo.aspx?id={0}";
			hlc.ItemStyle.Width=Unit.Pixel(400);	//设定标题列的宽度
			hlc.Target="_blank";
			dg.Columns.Add(hlc);

			//给DataGrid添加时间列
			bc=new BoundColumn();
			bc.HeaderText="发表时间";
			bc.ItemStyle.Width=Unit.Pixel(140);
			bc.DataField="date";
			dg.Columns.Add(bc);

			//将数据源绑定到DataGrid对象
			dg.DataSource=dt;
			dg.DataBind();
			
			//将数据提交到页面
			Response.Write(this.GetStringByControl(dg)+"<div id='pager'>"+this.GenPager(page,pageSize,count)+"</div>");

			//关闭数据库连接
			conn.Close();

		}

		//通过Asp.net控件获得其相应的HTML字符串表示
		public string GetStringByControl(System.Web.UI.Control c)
		{
			System.Text.StringBuilder sb=new System.Text.StringBuilder();
			System.IO.StringWriter writer=new System.IO.StringWriter(sb);
			System.Web.UI.HtmlTextWriter htw=new System.Web.UI.HtmlTextWriter(writer);
			c.RenderControl(htw);
			return sb.ToString();
		}

		//获得分页代码
		public string GenPager(int page,int pageSize,int count)
		{
			StringBuilder sb=new StringBuilder();
			int pageCount=(int)Math.Ceiling((double)count/pageSize);
			int start=((page-1)/10)*10+1;

			for(int i=start;i<=pageCount && i<start+10;i++)
			{
				if(i==page)sb.Append("<span title='当前页'>["+i.ToString()+"]</span>");
				else sb.Append("<a href='javascript:getPage("+i+")' title='第"+i.ToString()+"页'>["+i.ToString()+"]</a>");
			}

			if(start>1)
			{
				sb.Insert(0,"<a href='javascript:getPage("+(start-1).ToString()+")' title='第"+(start-1).ToString()+"页'>&lt;&lt;</a>");
				sb.Insert(0,"<a href='javascript:getPage("+(1).ToString()+")' title='首页'>|&lt;&lt;</a>");
			}

			if(start+10<pageCount)
			{
				sb.Append("<a href='javascript:getPage("+(start+10).ToString()+")' title='第"+(start+10).ToString()+"页'>&gt;&gt;</a>");
				sb.Append("<a href='javascript:getPage("+pageCount.ToString()+")' title='第"+pageCount.ToString()+"页(末页)'>&gt;&gt;|</a>");
			}

			return sb.ToString();
		}

		#region Web 窗体设计器生成的代码
		override protected void OnInit(EventArgs e)
		{
			//
			// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
			//
			InitializeComponent();
			base.OnInit(e);
		}
		
		/// <summary>
		/// 设计器支持所需的方法 - 不要使用代码编辑器修改
		/// 此方法的内容。
		/// </summary>
		private void InitializeComponent()
		{    
			this.Load += new System.EventHandler(this.Page_Load);
		}
		#endregion
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -