- int RecordCount = 0;
- int PageCount = 1;
- DataClassesDataContext data = new DataClassesDataContext();
- int SkipIndex = 0;
- private string _PageString = "";
- public string PageString
- {
- get {
- return _PageString;
- }
- set {
- _PageString = value;
- }
- }
- protected void Page_Load(object sender, EventArgs e)
- {
- RecordCount = data.Orders.Count(); //得到记录数
- PageCount = (int)Math.Ceiling((decimal)RecordCount / 10); //以10条记录为一页,计算总页码
- int page = 1;
- if (!string.IsNullOrEmpty(Request.QueryString["page"]))
- page = Convert.ToInt16(Request.QueryString["page"]);
- SkipIndex = (page-1) * 10; //计算起始索引,以供后面的Skip扩展方法之用
- //拼接分页代码
- StringBuilder sb = new StringBuilder();
- for (int i = 1; i < PageCount; i++)
- {
- sb.AppendFormat(@" <a href=""?page={0}"">{0}</a> ",i);
- }
- _PageString = sb.ToString();
- bind();
- }
- void bind()
- {
- //奇妙的Linq表达式
- var q = (from c in data.Orders select new
- { CustomerID = c.CustomerID, ShipAddress=c.ShipAddress,ID = c.OrderID}
- ).Skip(SkipIndex).Take(10);
- this.GridView1.DataSource = q;
- this.GridView1.DataBind();
- }
当显示的是第一页时,看linq表达式中为我们动态生成了什么样的语句:
SELECT TOP 10 [t0].[CustomerID], [t0].[ShipAddress], [t0].[OrderID] AS [ID]
FROM [dbo].[Orders] AS [t0]