TableRow row = new TableRow ();\r
table.Rows.Add (row);\r
\r
- if (Mode == PagerButtons.NextPrevious || Mode == PagerButtons.NextPreviousFirstLast)\r
- {\r
- if (currentPage > 0) {\r
- if (Mode == PagerButtons.NextPreviousFirstLast)\r
- row.Cells.Add (CreateCell (FirstPageText, FirstPageImageUrl, "Page", "First"));\r
- row.Cells.Add (CreateCell (PreviousPageText, PreviousPageImageUrl, "Page", "Prev"));\r
- }\r
- if (currentPage < pageCount - 1) {\r
- row.Cells.Add (CreateCell (NextPageText, NextPageImageUrl, "Page", "Next"));\r
- if (Mode == PagerButtons.NextPreviousFirstLast)\r
- row.Cells.Add (CreateCell (LastPageText, LastPageImageUrl, "Page", "Last"));\r
- }\r
+ int buttonCount = (Mode == PagerButtons.Numeric || Mode == PagerButtons.NumericFirstLast) ? PageButtonCount : 1;\r
+ int first = buttonCount * (currentPage / buttonCount);\r
+ int last = first + buttonCount;\r
+ if (last > pageCount) {\r
+ last = pageCount;\r
+ if (last - first < buttonCount)\r
+ first = last - buttonCount;\r
+ if (first < 0)\r
+ first = 0;\r
+ }\r
+\r
+ // First button\r
+ if (Mode == PagerButtons.NumericFirstLast || Mode == PagerButtons.NextPreviousFirstLast) {\r
+ if (first > 0)\r
+ row.Cells.Add (CreateCell (FirstPageText, FirstPageImageUrl, "Page", "First"));\r
}\r
- else if (Mode == PagerButtons.Numeric || Mode == PagerButtons.NumericFirstLast)\r
- {\r
- int pbc = PageButtonCount;\r
- int cp = currentPage + 1;\r
- int pbp = pbc <= cp ? cp / pbc : 0;\r
- int first = cp < pbc ? 0 : (cp + (pbp % pbc) - (pbc + pbp)) + 1;\r
- int last = first + pbc;\r
- if (last >= pageCount) last = pageCount;\r
- \r
- if (first > 0) {\r
- if (Mode == PagerButtons.NumericFirstLast)\r
- row.Cells.Add (CreateCell (FirstPageText, FirstPageImageUrl, "Page", "First"));\r
+\r
+ // Prev button\r
+ if (Mode == PagerButtons.NextPrevious || Mode == PagerButtons.NextPreviousFirstLast) {\r
+ if (first > 0)\r
row.Cells.Add (CreateCell (PreviousPageText, PreviousPageImageUrl, "Page", "Prev"));\r
- }\r
- \r
+ }\r
+\r
+ // Numbers\r
+ if (Mode == PagerButtons.Numeric || Mode == PagerButtons.NumericFirstLast) {\r
+ if (first > 0)\r
+ row.Cells.Add (CreateCell ("...", string.Empty, "Page", first.ToString ()));\r
for (int n = first; n < last; n++)\r
row.Cells.Add (CreateCell ((n + 1).ToString (), string.Empty, (n != currentPage) ? "Page" : "", (n + 1).ToString ()));\r
- \r
- if (last < pageCount - 1) {\r
+ if (last < pageCount)\r
+ row.Cells.Add (CreateCell ("...", string.Empty, "Page", (last + 1).ToString ()));\r
+ }\r
+\r
+ // Next button\r
+ if (Mode == PagerButtons.NextPrevious || Mode == PagerButtons.NextPreviousFirstLast) {\r
+ if (last < pageCount)\r
row.Cells.Add (CreateCell (NextPageText, NextPageImageUrl, "Page", "Next"));\r
- if (Mode == PagerButtons.NumericFirstLast)\r
- row.Cells.Add (CreateCell (LastPageText, LastPageImageUrl, "Page", "Last"));\r
- }\r
}\r
+\r
+ // Last button\r
+ if (Mode == PagerButtons.NumericFirstLast || Mode == PagerButtons.NextPreviousFirstLast) {\r
+ if (last < pageCount)\r
+ row.Cells.Add (CreateCell (LastPageText, LastPageImageUrl, "Page", "Last"));\r
+ }\r
+ \r
return table;\r
}\r
\r
p.Form.Controls.Add (lce);
}
+ [Test]
+ [Category("NunitWeb")]
+ public void GridView_RenderAllowPaging2 () {
+ string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderAllowPaging2)).Run ();
+ string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
+ string OriginControlHtml = @"<div>
+ <table cellspacing=""0"" rules=""all"" border=""1"" style=""border-collapse:collapse;"">
+ <tr>
+ <th scope=""col"">Item</th>
+ </tr><tr>
+ <td>France</td>
+ </tr><tr>
+ <td>Italy</td>
+ </tr><tr>
+ <td><table border=""0"">
+ <tr>
+ <td><a href=""javascript:__doPostBack('ctl01','Page$1')"">1</a></td><td><span>2</span></td><td><a href=""javascript:__doPostBack('ctl01','Page$3')"">3</a></td><td><a href=""javascript:__doPostBack('ctl01','Page$4')"">4</a></td><td><a href=""javascript:__doPostBack('ctl01','Page$5')"">...</a></td><td><a href=""javascript:__doPostBack('ctl01','Page$Last')"">>></a></td>
+ </tr>
+ </table></td>
+ </tr>
+ </table>
+ </div>";
+ HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderDefault");
+ }
+
+ public static void RenderAllowPaging2 (Page p) {
+ ArrayList myds = new ArrayList ();
+ myds.Add ("Norway");
+ myds.Add ("Sweden");
+ myds.Add ("France");
+ myds.Add ("Italy");
+ myds.Add ("Norway");
+ myds.Add ("Sweden");
+ myds.Add ("France");
+ myds.Add ("Italy");
+ myds.Add ("Norway");
+ myds.Add ("Sweden");
+ myds.Add ("France");
+ myds.Add ("Italy");
+ LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
+ LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
+ PokerGridView b = new PokerGridView ();
+ p.Form.Controls.Add (lcb);
+ p.Form.Controls.Add (b);
+ b.AllowPaging = true;
+ b.PageSize = 2;
+ b.PageIndex = 1;
+ b.PagerSettings.PageButtonCount = 4;
+ b.PagerSettings.Mode= PagerButtons.NumericFirstLast;
+ b.DataSource = myds;
+ b.DataBind ();
+ p.Form.Controls.Add (lce);
+ }
+
[Test]
public void GridView_RenderProperty ()
{
+