ListVew真實分頁簡單測試
.FrameWork 3.5 之後,很多人習慣使用ListView+DataPager做分頁
但DataPager的分頁做法是將所有資料查詢出來後,
在透過DataPager.SetPageProperties 方法去設定顯示的範圍
意思就是說,如果你非得要用DataPager做分頁的話,就必須考量一下效能
By the way,這裡主要是要記錄一下真實分頁,並且不用DataPager,我們直接看Code吧
int PageCount = 1;
DataClassesDataContext data = new DataClassesDataContext();
int PageIndex = 0;
private string _PageString {get;set;}
protected void Page_Load(object sender, EventArgs e)
{
RecordCount = data.LOG.Count();
PageCount = (int)Math.Ceiling((decimal)RecordCount / 10);
int page = 1;
if (!string.IsNullOrEmpty(Request.QueryString["page"]))
page = Convert.ToInt16(Request.QueryString["page"]);
PageIndex = (page - 1) * 10;
StringBuilder sb = new StringBuilder();
for (int i = 1; i < PageCount; i++)
{
sb.AppendFormat(@" <a href=""?page={0}"">{0}</a> ", i);
}
_PageString = sb.ToString();
Response.Write(_PageString);
bind();
}
void bind()
{ var q = (from c in data.LOG
select c
).Skip(PageIndex).Take(10);
this.ListView1.DataSource = q;
this.ListView1.DataBind();
}接下來用EF+DataPager+SQLite看看是不是有同樣的效果
int PageCount = 1;
NorthwindModel.NorthwindEntities1 c =new NorthwindModel.NorthwindEntities1();
int PageIndex = 0;
private string _PageString { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
RecordCount = c.Orders.Count();
PageCount = (int)Math.Ceiling((decimal)RecordCount / 10);
int page = 1;
if (!string.IsNullOrEmpty(Request.QueryString["page"]))
page = Convert.ToInt16(Request.QueryString["page"]);
PageIndex = (page - 1) * 10;
StringBuilder sb = new StringBuilder();
for (int i = 1; i < PageCount; i++)
{
sb.AppendFormat(@" <a href=""?page={0}"">{0}</a> ", i);
}
_PageString = sb.ToString();
Response.Write(_PageString);
bind();
}
private void bind()
{
var cc = (from i in c.Orders
select new
{
OrderID = i.OrderID,
CustomerID = i.CustomerID,
EmployeeID = i.EmployeeID,
ShipName = i.ShipName,
ShipAddress = i.ShipAddress
}).OrderBy(x => x.OrderID).Skip(PageIndex).Take(10);
ObjectQuery q = cc as ObjectQuery;
Response.Write(q.ToTraceString());
ListView1.DataSource = cc;
ListView1.DataBind();
}他也是很聰明的幫我們做到真實分頁
至於ListView+DataPager 有沒有辦法做到真實分頁呢?有知道的大大教學相長一下 ^___^