2010-04-13 Marek Habersack <mhabersack@novell.com>
authorMarek Habersack <grendel@twistedcode.net>
Tue, 13 Apr 2010 21:31:23 +0000 (21:31 -0000)
committerMarek Habersack <grendel@twistedcode.net>
Tue, 13 Apr 2010 21:31:23 +0000 (21:31 -0000)
* GridView.cs: make sure Header and Footer visibility are set when
binding the data. Fixes bug #595567

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

mcs/class/System.Web/Makefile
mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog
mcs/class/System.Web/System.Web.UI.WebControls/GridView.cs
mcs/class/System.Web/Test/System.Web.UI.WebControls/GridViewTest.cs
mcs/class/System.Web/Test/mainsoft/NunitWebResources/GridView_Bug595567.aspx [new file with mode: 0644]

index 75f6736923b2babebebdd42efda751f226441cb2..f4a69906008d8bcc3dc5642bfd610d69c6ea04da 100644 (file)
@@ -222,7 +222,8 @@ TEST_RESOURCE_FILES = \
        Test/mainsoft/NunitWebResources/CheckBoxField_Bug595568_2.aspx \
        Test/mainsoft/NunitWebResources/CheckBoxField_Bug595568_5.aspx \
        Test/mainsoft/NunitWebResources/CheckBoxField_Bug595568_6.aspx \
-       Test/mainsoft/NunitWebResources/CheckBoxField_Bug595568_7.aspx
+       Test/mainsoft/NunitWebResources/CheckBoxField_Bug595568_7.aspx \
+       Test/mainsoft/NunitWebResources/GridView_Bug595567.aspx
 
 RESX_DIST =  resources/TranslationResources.resx
 ifneq (1, $(FRAMEWORK_VERSION_MAJOR))
index 3feb031580dba739bf300298a3aaf660263e69d8..a7814351913e8d7d34e63160000f5c4ca466e305 100644 (file)
@@ -1,5 +1,8 @@
 2010-04-13  Marek Habersack  <mhabersack@novell.com>
 
+       * GridView.cs: make sure Header and Footer visibility are set when
+       binding the data. Fixes bug #595567
+
        * ImageField.cs, CheckBoxField.cs: OnDataBindField must expect
        sender to be something else than DataControlFieldCell. Fixes bug
        #595568
index 9c826480c66ef47423a65abfaf98a6cbc62153ea..26ace72c5ce04e6ab91bba0de75cd5e2295ab890 100644 (file)
@@ -1568,6 +1568,14 @@ namespace System.Web.UI.WebControls
                        base.DataBind ();
 
                        keys = new DataKeyArray (DataKeyArrayList);
+                       
+                       GridViewRow row = HeaderRow;
+                       if (row != null)
+                               row.Visible = ShowHeader;
+
+                       row = FooterRow;
+                       if (row != null)
+                               row.Visible = ShowFooter;
                }
                
                protected internal override void PerformDataBinding (IEnumerable data)
@@ -1579,7 +1587,7 @@ namespace System.Web.UI.WebControls
                {
                        if (table == null)
                                return;
-                       
+
                        table.Caption = Caption;
                        table.CaptionAlign = CaptionAlign;
                        table.CopyBaseAttributes (this);
@@ -2201,7 +2209,6 @@ namespace System.Web.UI.WebControls
                protected internal override void Render (HtmlTextWriter writer)
                {
                        PrepareControlHierarchy ();
-
                        if (EnableSortingAndPagingCallbacks)
                                writer.AddAttribute (HtmlTextWriterAttribute.Id, ClientID + "_div");
                        writer.RenderBeginTag (HtmlTextWriterTag.Div);
index 905f3d89d80b64e2f9348b969d220b76230c6663..57730c4bbd996b521a7b15966276dd6266c2a4e8 100644 (file)
@@ -440,8 +440,32 @@ namespace MonoTests.System.Web.UI.WebControls
                        WebTest.CopyResource (GetType (), "NoEventValidation.aspx", "NoEventValidation.aspx");
                        WebTest.CopyResource (GetType (), "TableSections_Bug551666.aspx", "TableSections_Bug551666.aspx");
                        WebTest.CopyResource (GetType (), "TableSections_Bug551666.aspx.cs", "TableSections_Bug551666.aspx.cs");
-               }
+                       WebTest.CopyResource (GetType (), "GridView_Bug595567.aspx", "GridView_Bug595567.aspx");
+               }
+
+               [Test (Description="Bug 595567")]
+               public void HeaderFooterVisibility_Bug595567 ()
+               {
+                       WebTest t = new WebTest ("GridView_Bug595567.aspx");
+                       string originalHtml = @"<div> 
+       <table id=""gridView"" cellspacing=""0"" rules=""all"" border=""1"" style=""border-collapse:collapse;""> 
+                       <tr> 
+                               <th scope=""col"">Item</th> 
+                       </tr><tr> 
+                               <td>0</td> 
+                       </tr><tr> 
+                               <td>0</td> 
+                       </tr><tr> 
+                               <td>0</td> 
+                       </tr> 
+               </table> 
+       </div>";
+                       string pageHtml = t.Run ();
+                       string renderedHtml = HtmlDiff.GetControlFromPageHtml (pageHtml);
 
+                       HtmlDiff.AssertAreEqual (originalHtml, renderedHtml, "#A1");
+               }
+               
                [Test]
                public void GridView_DefaultProperties ()
                {
diff --git a/mcs/class/System.Web/Test/mainsoft/NunitWebResources/GridView_Bug595567.aspx b/mcs/class/System.Web/Test/mainsoft/NunitWebResources/GridView_Bug595567.aspx
new file mode 100644 (file)
index 0000000..e16ea71
--- /dev/null
@@ -0,0 +1,28 @@
+<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyPage.aspx.cs" Inherits="MyPage" %>
+<script runat="server">
+    protected void Page_Load(object sender, EventArgs e)
+    {
+        if (IsPostBack) return;
+        
+        gridView.DataSource = new int[3];
+        gridView.DataBind();
+
+        GridViewRow row = gridView.FooterRow;
+        if (row.RowType == DataControlRowType.Footer && !gridView.ShowFooter && row.Visible)
+            throw new InvalidOperationException("Unexpected state: GridView.ShowFooter is False but the Footer row is Visible!");
+    }
+</script>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head runat="server">
+    <title></title>
+</head>
+<body>
+    <form id="form1" runat="server">
+    <div>
+       <%= MonoTests.stand_alone.WebHarness.HtmlDiff.BEGIN_TAG %><asp:GridView runat="server" ID="gridView" /><%= MonoTests.stand_alone.WebHarness.HtmlDiff.END_TAG %>
+    </div>
+    </form>
+</body>
+</html>