3 * Namespace : System.Web.UI.MobileControls
5 * Author : Gaurav Vaish
7 * Copyright : 2003 with Gaurav Vaish, and with
11 using System.Web.Mobile;
13 namespace System.Web.UI.MobileControls
15 public class ItemPager
17 private MobileControl control;
19 private int firstPage;
22 private int firstPageItemCount;
23 private int fullPageItemCount;
24 private int lastPageItemCount;
30 public ItemPager(ControlPager pager, MobileControl control,
31 int itemCount, int itemsPerPage, int itemWeight)
33 this.control = control;
36 if(itemCount < itemsPerPage)
38 firstPageItemCount = itemCount;
39 firstPage = pager.GetPage(itemWeight * itemCount);
43 int ppic = (itemCount - 1)/itemsPerPage + 1;
44 firstPageItemCount = itemsPerPage;
45 fullPageItemCount = itemsPerPage;
46 lastPageItemCount = ppic - (ppic - 1)*itemsPerPage;
47 firstPage = pager.GetPage(itemsPerPage * itemWeight);
48 pager.PageCount += (ppic - 1);
51 pager.RemainingWeight = pager.PageWeight
52 - (itemsPerPage * itemWeight);
53 lastPage = firstPage + ppic - 1;
58 int totalWt = itemWeight * itemCount;
59 if(totalWt <= pager.RemainingWeight)
61 firstPageItemCount = itemCount;
62 firstPage = pager.GetPage(totalWt);
66 firstPageItemCount = pager.RemainingWeight / itemWeight;
67 int rem = itemCount - firstPageItemCount;
68 fullPageItemCount = Math.Max(itemWeight, pager.PageWeight);
69 int pages = rem / fullPageItemCount;
70 lastPageItemCount = rem % fullPageItemCount;
71 firstPage = pager.PageCount;
73 pager.RemainingWeight = pager.PageWeight;
74 pager.PageCount += pages;
75 pager.RemainingWeight -= lastPageItemCount * itemWeight;
76 if(firstPageItemCount == 0)
79 firstPageItemCount = Math.Min(fullPageItemCount,
82 if(lastPageItemCount == 0)
85 lastPageItemCount = Math.Min(fullPageItemCount,
87 pager.RemainingWeight = 0;
89 lastPage = pager.PageCount;
91 control.FirstPage = firstPage;
92 control.LastPage = lastPage;
100 return GetItemCount();
108 return GetItemIndex();
112 private int GetItemCount()
114 int cp = control.Form.CurrentPage;
116 if(cp >= firstPage && cp <= lastPage)
119 retVal = firstPageItemCount;
120 else if(cp == lastPage)
121 retVal = lastPageItemCount;
123 retVal = fullPageItemCount;
131 private int GetItemIndex()
133 int cp = control.Form.CurrentPage;
135 if(cp >= firstPage && cp <= lastPage)
141 retVal = (cp - firstPage - 1)* fullPageItemCount
142 + firstPageItemCount;