* GridView: fixed DataKeyNames property, moved to ControlState
authorVladimir Krasnov <krasnov@mono-cvs.ximian.com>
Tue, 18 Jul 2006 11:44:41 +0000 (11:44 -0000)
committerVladimir Krasnov <krasnov@mono-cvs.ximian.com>
Tue, 18 Jul 2006 11:44:41 +0000 (11:44 -0000)
fixed PageCount property, initial PageCount ahould be zero
fixed SelectedDataKey, should throw exception if not initialized
fixed CreateColumns, wrong order of columns
fixed CreateControlStyle,
fixed InitializePager, no columnspan attrib on only one column
fixed LoadControlState, SaveControlState added DataKeyNames
fixed Render, RenderGrid should render within div tag
implemented GetPostBackOptions
* DataControlButton.cs: fixed Render, fixed style for img button

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

mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog
mcs/class/System.Web/System.Web.UI.WebControls/DataControlButton.cs
mcs/class/System.Web/System.Web.UI.WebControls/GridView.cs

index 86ce23a55129b24c160bc03ff91bf54e0e4d34dc..25fbaca6294fefa452c23e4452cc1d63d193a333 100644 (file)
@@ -1,3 +1,16 @@
+2006-07-17 Vladimir Krasnov <vladimirk@mainsoft.com>
+
+       * GridView: fixed DataKeyNames property, moved to ControlState
+       fixed PageCount property, initial PageCount ahould be zero
+       fixed SelectedDataKey, should throw exception if not initialized
+       fixed CreateColumns, wrong order of columns
+       fixed CreateControlStyle,
+       fixed InitializePager, no columnspan attrib on only one column
+       fixed LoadControlState, SaveControlState added DataKeyNames
+       fixed Render, RenderGrid should render within div tag
+       implemented GetPostBackOptions
+       * DataControlButton.cs: fixed Render, fixed style for img button
+
 2006-07-17 Vladimir Krasnov <vladimirk@mainsoft.com>
 
        * CheckBoxField.cs: fixed InitializeDataCell, tooltip only in edit
index 89f6fb0ff32fe7b0648f06f762fb9fcd87eea56e..5a5266432c7f4994d066225c8c49488b2f130bda 100644 (file)
@@ -116,62 +116,60 @@ namespace System.Web.UI.WebControls
                        
                                ControlStyle.AddAttributesToRender (writer);
                                
-                               if (ButtonType == ButtonType.Link || ButtonType == ButtonType.Image)
-                               {
-                                       if (ImageUrl.Length > 0) {
-                                               writer.AddAttribute (HtmlTextWriterAttribute.Type, "image");
-                                               writer.AddAttribute (HtmlTextWriterAttribute.Src, ResolveUrl (ImageUrl));
-                                               if (callScript != null)
-                                                       writer.AddAttribute (HtmlTextWriterAttribute.Onclick, callScript);
-                                               else
-                                                       writer.AddAttribute (HtmlTextWriterAttribute.Onclick, postScript);
-                                               if (Text.Length > 0)
-                                                       writer.AddAttribute (HtmlTextWriterAttribute.Alt, Text);
-                                               writer.RenderBeginTag (HtmlTextWriterTag.Input);
-                                               writer.RenderEndTag ();
-                                       }
-                                       else {
-                                               if (callScript != null) {
-                                                       writer.AddAttribute (HtmlTextWriterAttribute.Onclick, callScript);
-                                                       writer.AddAttribute (HtmlTextWriterAttribute.Href, "javascript:");
-                                               }
-                                               else
-                                                       writer.AddAttribute (HtmlTextWriterAttribute.Href, "javascript:" + postScript);
-                                               writer.RenderBeginTag (HtmlTextWriterTag.A);
-                                               writer.Write (Text);
-                                               writer.RenderEndTag ();
+                               if (ButtonType == ButtonType.Image) {
+                                       writer.AddAttribute (HtmlTextWriterAttribute.Type, "image");
+                                       writer.AddAttribute (HtmlTextWriterAttribute.Src, ResolveUrl (ImageUrl));
+                                       if (callScript != null)
+                                               writer.AddAttribute (HtmlTextWriterAttribute.Onclick, callScript);
+                                       else
+                                               writer.AddAttribute (HtmlTextWriterAttribute.Onclick, postScript);
+                                       if (Text.Length > 0)
+                                               writer.AddAttribute (HtmlTextWriterAttribute.Alt, Text);
+                                       writer.AddStyleAttribute (HtmlTextWriterStyle.BorderWidth, "0px");
+                                       writer.RenderBeginTag (HtmlTextWriterTag.Input);
+                                       writer.RenderEndTag ();
+                               }
+                               if (ButtonType == ButtonType.Link) {
+                                       if (callScript != null) {
+                                               writer.AddAttribute (HtmlTextWriterAttribute.Onclick, callScript);
+                                               writer.AddAttribute (HtmlTextWriterAttribute.Href, "javascript:");
                                        }
+                                       else
+                                               writer.AddAttribute (HtmlTextWriterAttribute.Href, "javascript:" + postScript);
+                                       writer.RenderBeginTag (HtmlTextWriterTag.A);
+                                       writer.Write (Text);
+                                       writer.RenderEndTag ();
                                }
-                               else if (ButtonType == ButtonType.Button)
-                               {
+                               if (ButtonType == ButtonType.Button) {
                                        if (callScript != null)
                                                writer.AddAttribute (HtmlTextWriterAttribute.Onclick, callScript);
                                        else
                                                writer.AddAttribute (HtmlTextWriterAttribute.Onclick, postScript);
-                                               
+
                                        writer.AddAttribute (HtmlTextWriterAttribute.Type, "submit");
                                        writer.AddAttribute (HtmlTextWriterAttribute.Name, ClientID);
                                        writer.AddAttribute (HtmlTextWriterAttribute.Value, Text);
                                        writer.RenderBeginTag (HtmlTextWriterTag.Input);
                                        writer.RenderEndTag ();
                                }
-                       } else {
+                       }
+                       else {
                                if (ImageUrl.Length > 0) {
                                        ControlStyle.AddAttributesToRender (writer);
                                        writer.AddAttribute (HtmlTextWriterAttribute.Src, ResolveUrl (ImageUrl));
                                        if (Text.Length > 0)
                                                writer.AddAttribute (HtmlTextWriterAttribute.Alt, Text);
+                                       writer.AddStyleAttribute (HtmlTextWriterStyle.BorderWidth, "0px");
                                        writer.RenderBeginTag (HtmlTextWriterTag.Img);
                                        writer.RenderEndTag ();
                                }
                                else {
                                        if (!ControlStyle.IsEmpty) {
                                                ControlStyle.AddAttributesToRender (writer);
-                                               writer.RenderBeginTag (HtmlTextWriterTag.Span);
-                                               writer.Write (Text);
-                                               writer.RenderEndTag ();
-                                       } else
-                                               writer.Write (Text);
+                                       }
+                                       writer.RenderBeginTag (HtmlTextWriterTag.Span);
+                                       writer.Write (Text);
+                                       writer.RenderEndTag ();
                                }
                        }
                }
index d8be5cc51c8ccd16bb0554c09dc79880a2ad2e9d..3e138b3774ed5a77c5a5c23a0568e54cbeb1d4d0 100644 (file)
@@ -66,6 +66,7 @@ namespace System.Web.UI.WebControls
                DataControlFieldCollection columns;
                PagerSettings pagerSettings;
                
+               TableStyle style;
                TableItemStyle alternatingRowStyle;
                TableItemStyle editRowStyle;
                TableItemStyle emptyDataRowStyle;
@@ -77,6 +78,7 @@ namespace System.Web.UI.WebControls
                DataKeyArray keys;
                DataKey oldEditValues;
                AutoGeneratedFieldProperties[] autoFieldProperties;
+               string [] dataKeyNames = null;
                readonly string[] emptyKeys = new string[0];
                
                private static readonly object PageIndexChangedEvent = new object();
@@ -97,11 +99,11 @@ namespace System.Web.UI.WebControls
                
                // Control state
                int pageIndex;
-               int pageCount = -1;
+               int pageCount = 0;
                int selectedIndex = -1;
                int editIndex = -1;
                SortDirection sortDirection = SortDirection.Ascending;
-               string sortExpression;
+               string sortExpression = string.Empty;
                
                public GridView ()
                {
@@ -511,12 +513,12 @@ namespace System.Web.UI.WebControls
                public virtual string[] DataKeyNames
                {
                        get {
-                               object o = ViewState ["DataKeyNames"];
-                               if (o != null) return (string[]) o;
+                               if (dataKeyNames != null)
+                                       return dataKeyNames;
                                return emptyKeys;
                        }
                        set {
-                               ViewState ["DataKeyNames"] = value;
+                               dataKeyNames = value;
                                RequireBinding ();
                        }
                }
@@ -717,7 +719,7 @@ namespace System.Web.UI.WebControls
                [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Hidden)]
                public virtual int PageCount {
                        get {
-                               if (pageCount != -1) return pageCount;
+                               if (pageCount != 0) return pageCount;
                                EnsureDataBound ();
                                return pageCount;
                        }
@@ -834,6 +836,9 @@ namespace System.Web.UI.WebControls
                [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Hidden)]
                public virtual DataKey SelectedDataKey {
                        get {
+                               if (DataKeys == null)
+                                       throw new InvalidOperationException ("DataKeys");
+
                                if (selectedIndex >= 0 && selectedIndex < DataKeys.Count) {
                                        return DataKeys [selectedIndex];
                                } else
@@ -974,6 +979,7 @@ namespace System.Web.UI.WebControls
                protected virtual ICollection CreateColumns (PagedDataSource dataSource, bool useDataSource)
                {
                        ArrayList fields = new ArrayList ();
+                       fields.AddRange (Columns);
                        
                        if (AutoGenerateEditButton || AutoGenerateDeleteButton || AutoGenerateSelectButton) {
                                CommandField field = new CommandField ();
@@ -993,8 +999,6 @@ namespace System.Web.UI.WebControls
                                }
                        }
                        
-                       fields.AddRange (Columns);
-                       
                        return fields;
                }
                
@@ -1211,7 +1215,10 @@ namespace System.Web.UI.WebControls
                [MonoTODO]
                protected override Style CreateControlStyle ()
                {
-                       return base.CreateControlStyle ();
+                       style = new TableStyle (ViewState);
+                       style.GridLines = GridLines.Both;
+                       style.CellSpacing = 0;
+                       return style;
                }
                
                DataControlRowState GetRowState (int index)
@@ -1232,7 +1239,8 @@ namespace System.Web.UI.WebControls
                protected virtual void InitializePager (GridViewRow row, int columnSpan, PagedDataSource dataSource)
                {
                        TableCell cell = new TableCell ();
-                       cell.ColumnSpan = columnSpan;
+                       if (columnSpan > 1)
+                               cell.ColumnSpan = columnSpan;
                        
                        if (pagerTemplate != null)
                                pagerTemplate.InstantiateIn (cell);
@@ -1639,13 +1647,14 @@ namespace System.Web.UI.WebControls
                        editIndex = (int) state[4];
                        sortExpression = (string) state[5];
                        sortDirection = (SortDirection) state[6];
+                       DataKeyNames = (string []) state [7];
                }
                
                protected internal override object SaveControlState ()
                {
                        object bstate = base.SaveControlState ();
                        return new object[] {
-                               bstate, pageIndex, pageCount, selectedIndex, editIndex, sortExpression, sortDirection
+                               bstate, pageIndex, pageCount, selectedIndex, editIndex, sortExpression, sortDirection, DataKeyNames
                                        };
                }
                
@@ -1823,35 +1832,23 @@ namespace System.Web.UI.WebControls
                {
                        if (EnableSortingAndPagingCallbacks)
                                base.RenderBeginTag (writer);
+                       else
+                               writer.RenderBeginTag (HtmlTextWriterTag.Div);
 
                        RenderGrid (writer);
                        
                        if (EnableSortingAndPagingCallbacks)
                                base.RenderEndTag (writer);
+                       else
+                               writer.RenderEndTag ();
                }
                
                void RenderGrid (HtmlTextWriter writer)
                {
-                       switch (GridLines) {
-                       case GridLines.Horizontal:
-                               writer.AddAttribute (HtmlTextWriterAttribute.Rules, "rows");
-                               writer.AddAttribute (HtmlTextWriterAttribute.Border, "1");
-                               break;
-                       case GridLines.Vertical:
-                               writer.AddAttribute (HtmlTextWriterAttribute.Rules, "cols");
-                               writer.AddAttribute (HtmlTextWriterAttribute.Border, "1");
-                               break;
-                       case GridLines.Both:
-                               writer.AddAttribute (HtmlTextWriterAttribute.Rules, "all");
-                               writer.AddAttribute (HtmlTextWriterAttribute.Border, "1");
-                               break;
-                       default:
-                               writer.AddAttribute (HtmlTextWriterAttribute.Border, "0");
-                               break;
-                       }
-                       
-                       writer.AddAttribute (HtmlTextWriterAttribute.Cellspacing, "0");
-                       writer.AddStyleAttribute (HtmlTextWriterStyle.BorderCollapse, "collapse");
+                       if (table == null)
+                               return;
+
+                       table.GridLines = GridLines;
                        table.RenderBeginTag (writer);
                        
                        foreach (GridViewRow row in table.Rows)
@@ -1908,7 +1905,8 @@ namespace System.Web.UI.WebControls
                [MonoTODO]
                PostBackOptions IPostBackContainer.GetPostBackOptions (IButtonControl control)
                {
-                       throw new NotImplementedException ();
+                       PostBackOptions pbo = new PostBackOptions (this, control.CommandName + "$" + control.CommandArgument);
+                       return pbo;
                }
        }
 }