2006-10-24 Igor Zelmanovich <igorz@mainsoft.com>
authorIgor Zelmanovich <igorz@mono-cvs.ximian.com>
Tue, 24 Oct 2006 15:48:54 +0000 (15:48 -0000)
committerIgor Zelmanovich <igorz@mono-cvs.ximian.com>
Tue, 24 Oct 2006 15:48:54 +0000 (15:48 -0000)
* PagerSettings.cs: fixed: CreatePagerControl.

svn path=/trunk/mcs/; revision=66925

mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog
mcs/class/System.Web/System.Web.UI.WebControls/PagerSettings.cs
mcs/class/System.Web/Test/System.Web.UI.WebControls/ChangeLog
mcs/class/System.Web/Test/System.Web.UI.WebControls/GridViewTest.cs

index e16bc0e1fc1e94e8f181fc24cdaa88088bd64a8f..1503bfa37d9013c296c740dccc5a76a36066764f 100644 (file)
@@ -1,3 +1,7 @@
+2006-10-24 Igor Zelmanovich <igorz@mainsoft.com>
+
+       * PagerSettings.cs: fixed: CreatePagerControl.
+
 2006-10-24 Igor Zelmanovich <igorz@mainsoft.com>
 
        * CommandField.cs: fixed: 
index d57a79e4042809280b5ed338428f23a348b11a42..961a88fe333f100bd9eefd7df645f1f53156bd46 100644 (file)
@@ -276,43 +276,51 @@ namespace System.Web.UI.WebControls
                        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
index b2618e71b21933e6923c1cbdfcc47ae7e608bf49..1f0c796f16e32bd28ba45e3a68b0d2b1e870e2b1 100644 (file)
@@ -1,3 +1,7 @@
+2006-10-24 Igor Zelmanovich <igorz@mainsoft.com>
+
+       * GridViewTest.cs: new test was added
+                       
 2006-10-24 Igor Zelmanovich <igorz@mainsoft.com>
 
        * GridViewTest.cs: removed NotWorking attributes
index d0c2e2193149fc2ee2a53604c94756fa286979bc..e0a663499f12eba8cb203a4d0cb58a6bab6fc492 100644 (file)
@@ -1308,6 +1308,60 @@ namespace MonoTests.System.Web.UI.WebControls
                        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')"">&gt;&gt;</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 ()
                {
@@ -2315,3 +2369,4 @@ namespace MonoTests.System.Web.UI.WebControls
 
 
 
+