2010-02-18 Marek Habersack <mhabersack@novell.com>
[mono.git] / mcs / class / System.Web / System.Web.UI.WebControls / GridView.cs
index 1710fffdd6abfbd2b0a392ed6b1f4b3a3c52ec96..eac5c285e924b1e251f59b73edba373e8fd1e40e 100644 (file)
@@ -46,7 +46,7 @@ namespace System.Web.UI.WebControls
        [DefaultEventAttribute ("SelectedIndexChanged")]
        [AspNetHostingPermissionAttribute (SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
        [AspNetHostingPermissionAttribute (SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
-       public class GridView: CompositeDataBoundControl, ICallbackEventHandler, ICallbackContainer, IPostBackEventHandler, IPostBackContainer
+       public class GridView: CompositeDataBoundControl, ICallbackEventHandler, ICallbackContainer, IPostBackEventHandler, IPostBackContainer, IPersistedSelector
        {
                Table table;
                GridViewRowCollection rows;
@@ -543,6 +543,12 @@ namespace System.Web.UI.WebControls
                        }
                }
 
+               [BrowsableAttribute(false)]
+               public IAutoFieldGenerator ColumnsGenerator {
+                       get;
+                       set;
+               }
+
                [DefaultValueAttribute (null)]
                [WebCategoryAttribute ("Data")]
                [TypeConverter (typeof(StringArrayConverter))]
@@ -918,6 +924,18 @@ namespace System.Web.UI.WebControls
                                        return null;
                        }
                }
+
+               [MonoTODO]
+               [BrowsableAttribute(false)]
+               public virtual DataKey SelectedPersistedDataKey {
+                       get; set;
+               }
+
+               [MonoTODO]
+               DataKey IPersistedSelector.DataKey {
+                       get { return SelectedPersistedDataKey; }
+                       set { SelectedPersistedDataKey = value; }
+               }
                
                [BindableAttribute (true)]
                [DefaultValueAttribute (-1)]
@@ -1097,6 +1115,14 @@ namespace System.Web.UI.WebControls
                
                protected virtual ICollection CreateColumns (PagedDataSource dataSource, bool useDataSource)
                {
+                       bool autoGenerate = AutoGenerateColumns;
+
+                       if (autoGenerate) {
+                               IAutoFieldGenerator fieldGenerator = ColumnsGenerator;
+                               if (fieldGenerator != null)
+                                       return fieldGenerator.GenerateFields (this);
+                       }
+                       
                        ArrayList fields = new ArrayList ();
                        
                        if (AutoGenerateEditButton || AutoGenerateDeleteButton || AutoGenerateSelectButton) {
@@ -1109,7 +1135,7 @@ namespace System.Web.UI.WebControls
 
                        fields.AddRange (Columns);
                        
-                       if (AutoGenerateColumns) {
+                       if (autoGenerate) {
                                if (useDataSource)
                                        autoFieldProperties = CreateAutoFieldProperties (dataSource);