2007-07-01 Igor Zelmanovich <igorz@mainsoft.com>
authorIgor Zelmanovich <igorz@mono-cvs.ximian.com>
Sun, 1 Jul 2007 09:28:15 +0000 (09:28 -0000)
committerIgor Zelmanovich <igorz@mono-cvs.ximian.com>
Sun, 1 Jul 2007 09:28:15 +0000 (09:28 -0000)
* FormView.cs:
* DetailView.cs:
* GridView.cs:
does not requires data binding if any ITemplate property is set.

2007-07-01 Igor Zelmanovich <igorz@mainsoft.com>

* FormViewTest.cs:
* DetailViewTest.cs:
* GridViewTest.cs:
Added new tests

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

mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog
mcs/class/System.Web/System.Web.UI.WebControls/DetailsView.cs
mcs/class/System.Web/System.Web.UI.WebControls/FormView.cs
mcs/class/System.Web/System.Web.UI.WebControls/GridView.cs
mcs/class/System.Web/Test/System.Web.UI.WebControls/ChangeLog
mcs/class/System.Web/Test/System.Web.UI.WebControls/DetailsViewTest.cs
mcs/class/System.Web/Test/System.Web.UI.WebControls/FormViewTest.cs
mcs/class/System.Web/Test/System.Web.UI.WebControls/GridViewTest.cs

index d2a41ce5f44f47a3debd3b6ade2155b3b135344c..a42cf20f650425668c0d0651b6cc88196e6ffbfa 100644 (file)
@@ -1,3 +1,10 @@
+2007-07-01 Igor Zelmanovich <igorz@mainsoft.com>
+
+       * FormView.cs:
+       * DetailView.cs:
+       * GridView.cs:
+       does not requires data binding if any ITemplate property is set.
+
 2007-06-24  Vladimir Krasnov  <vladimirk@mainsoft.com>
 
        * CheckBox.cs: fixed Render, HasAttributes called instead
index 7b6a78a43a64f6078e3721aeb559315f1b9171c9..320df9df631114e517a1b11182ad2058a4ba3181 100644 (file)
@@ -610,7 +610,7 @@ namespace System.Web.UI.WebControls
                [Browsable (false)]\r
                public virtual ITemplate EmptyDataTemplate {\r
                        get { return emptyDataTemplate; }\r
-                       set { emptyDataTemplate = value; RequireBinding (); }\r
+                       set { emptyDataTemplate = value; }\r
                }\r
                \r
                [LocalizableAttribute (true)]\r
@@ -673,7 +673,7 @@ namespace System.Web.UI.WebControls
                [Browsable (false)]\r
                public virtual ITemplate FooterTemplate {\r
                        get { return footerTemplate; }\r
-                       set { footerTemplate = value; RequireBinding (); }\r
+                       set { footerTemplate = value; }\r
                }\r
 \r
                [LocalizableAttribute (true)]\r
@@ -751,7 +751,7 @@ namespace System.Web.UI.WebControls
                [Browsable (false)]\r
                public virtual ITemplate HeaderTemplate {\r
                        get { return headerTemplate; }\r
-                       set { headerTemplate = value; RequireBinding (); }\r
+                       set { headerTemplate = value; }\r
                }\r
 \r
                [LocalizableAttribute (true)]\r
@@ -865,7 +865,7 @@ namespace System.Web.UI.WebControls
                [Browsable (false)]\r
                public virtual ITemplate PagerTemplate {\r
                        get { return pagerTemplate; }\r
-                       set { pagerTemplate = value; RequireBinding (); }\r
+                       set { pagerTemplate = value; }\r
                }\r
                \r
                [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Hidden)]\r
index 8fc52eb61fe2f8459f24b100ed5f8726ce56bea0..a372b332108b7fc3051abd2817e3b0d5f28162ed 100644 (file)
@@ -464,7 +464,7 @@ namespace System.Web.UI.WebControls
                [Browsable (false)]
                public virtual ITemplate EditItemTemplate {
                        get { return editItemTemplate; }
-                       set { editItemTemplate = value; RequireBinding (); }
+                       set { editItemTemplate = value; }
                }
 
                [WebCategoryAttribute ("Styles")]
@@ -505,7 +505,7 @@ namespace System.Web.UI.WebControls
                [Browsable (false)]
                public virtual ITemplate EmptyDataTemplate {
                        get { return emptyDataTemplate; }
-                       set { emptyDataTemplate = value; RequireBinding (); }
+                       set { emptyDataTemplate = value; }
                }
                
                [LocalizableAttribute (true)]
@@ -538,7 +538,7 @@ namespace System.Web.UI.WebControls
                [Browsable (false)]
                public virtual ITemplate FooterTemplate {
                        get { return footerTemplate; }
-                       set { footerTemplate = value; RequireBinding (); }
+                       set { footerTemplate = value; }
                }
 
                [LocalizableAttribute (true)]
@@ -616,7 +616,7 @@ namespace System.Web.UI.WebControls
                [Browsable (false)]
                public virtual ITemplate HeaderTemplate {
                        get { return headerTemplate; }
-                       set { headerTemplate = value; RequireBinding (); }
+                       set { headerTemplate = value; }
                }
 
                [LocalizableAttribute (true)]
@@ -653,7 +653,7 @@ namespace System.Web.UI.WebControls
                [Browsable (false)]
                public virtual ITemplate InsertItemTemplate {
                        get { return insertItemTemplate; }
-                       set { insertItemTemplate = value; RequireBinding (); }
+                       set { insertItemTemplate = value; }
                }
 
                [WebCategoryAttribute ("Styles")]
@@ -678,7 +678,7 @@ namespace System.Web.UI.WebControls
                [Browsable (false)]
                public virtual ITemplate ItemTemplate {
                        get { return itemTemplate; }
-                       set { itemTemplate = value; RequireBinding (); }
+                       set { itemTemplate = value; }
                }
                
                [BrowsableAttribute (false)]
@@ -746,7 +746,7 @@ namespace System.Web.UI.WebControls
                [Browsable (false)]
                public virtual ITemplate PagerTemplate {
                        get { return pagerTemplate; }
-                       set { pagerTemplate = value; RequireBinding (); }
+                       set { pagerTemplate = value; }
                }
                
                [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Hidden)]
index d7064ea24d9d87723d520ae44fbbf416647ba547..b2c3f07b21c4c8b7ba401f7945ff169bc8f419e1 100644 (file)
@@ -641,7 +641,7 @@ namespace System.Web.UI.WebControls
                [Browsable (false)]
                public virtual ITemplate EmptyDataTemplate {
                        get { return emptyDataTemplate; }
-                       set { emptyDataTemplate = value; RequireBinding (); }
+                       set { emptyDataTemplate = value; }
                }
                
                [LocalizableAttribute (true)]
@@ -859,7 +859,7 @@ namespace System.Web.UI.WebControls
                [Browsable (false)]
                public virtual ITemplate PagerTemplate {
                        get { return pagerTemplate; }
-                       set { pagerTemplate = value; RequireBinding (); }
+                       set { pagerTemplate = value; }
                }
                
                [DefaultValueAttribute ("")]
index 407ada23e2c7b85725d0b636c4ec74ca7ca7291b..3c4526671cd97d1337163d106bb1854133e75351 100644 (file)
@@ -1,3 +1,10 @@
+2007-07-01 Igor Zelmanovich <igorz@mainsoft.com>
+
+       * FormViewTest.cs:
+       * DetailViewTest.cs:
+       * GridViewTest.cs:
+       Added new tests
+
 2007-06-20  yonik <yonik@mainsoft.com>
 
      * DropDownListTest.cs;
index 7b7ed1fd0132896067687d76ccd9976c5a155a89..a2a9a8f471df846c0a411292cf1ce8b237a47eca 100644 (file)
@@ -2870,6 +2870,40 @@ namespace MonoTests.System.Web.UI.WebControls
                        dv.Page = new Page ();\r
                        PostBackOptions options = ((IPostBackContainer) dv).GetPostBackOptions (null);\r
                }\r
+\r
+               [Test]\r
+               [Category ("NunitWeb")]\r
+               public void DetailsView_RequiresDataBinding () {\r
+                       PageDelegates delegates = new PageDelegates ();\r
+                       delegates.LoadComplete = DetailsView_RequiresDataBinding_LoadComplete;\r
+                       PageInvoker invoker = new PageInvoker (delegates);\r
+                       WebTest t = new WebTest (invoker);\r
+                       t.Run ();\r
+               }\r
+\r
+               public static void DetailsView_RequiresDataBinding_LoadComplete (Page p) {\r
+                       PokerDetailsView view = new PokerDetailsView ();\r
+                       p.Form.Controls.Add (view);\r
+\r
+                       view.DataSource = new string [] { "A", "B", "C" };\r
+                       view.DataBind ();\r
+\r
+                       Assert.AreEqual (false, view.GetRequiresDataBinding ());\r
+\r
+                       view.PagerTemplate = new CompiledTemplateBuilder (BuildTemplateMethod);\r
+                       Assert.AreEqual (false, view.GetRequiresDataBinding (), "PagerTemplate was set");\r
+\r
+                       view.EmptyDataTemplate = new CompiledTemplateBuilder (BuildTemplateMethod);\r
+                       Assert.AreEqual (false, view.GetRequiresDataBinding (), "EmptyDataTemplate was set");\r
+\r
+                       view.HeaderTemplate = new CompiledTemplateBuilder (BuildTemplateMethod);\r
+                       Assert.AreEqual (false, view.GetRequiresDataBinding (), "HeaderTemplate was set");\r
+\r
+                       view.FooterTemplate = new CompiledTemplateBuilder (BuildTemplateMethod);\r
+                       Assert.AreEqual (false, view.GetRequiresDataBinding (), "FooterTemplate was set");\r
+               }\r
+\r
+               public static void BuildTemplateMethod (Control c) { }\r
        }\r
 \r
        public class DTemplate : ITemplate\r
@@ -3017,3 +3051,4 @@ namespace MonoTests.System.Web.UI.WebControls
 \r
 \r
 \r
+\r
index 7318795dcc0c74ab7435e289b01c31e26f39589f..555248867dbdb82e73764d02f6ad0c66bb18aa60 100644 (file)
@@ -47,7 +47,7 @@ using MonoTests.SystemWeb.Framework;
 using MonoTests.stand_alone.WebHarness;
 using System.Text.RegularExpressions;
 using System.Reflection;
-using System.Threading;\r
+using System.Threading;
 
 
 
@@ -83,27 +83,27 @@ namespace MonoTests.System.Web.UI.WebControls
 
                        public static int GetCount () {
                                return GetList ().Count;
-                       }\r
-               }\r
-\r
-               public class DS : ObjectDataSource\r
-               {\r
-                       public static List<string> GetList ()\r
-                       {\r
-                               List<string> list = new List<string> ();\r
-                               list.Add ("Norway");\r
-                               list.Add ("Sweden");\r
-                               list.Add ("France");\r
-                               list.Add ("Italy");\r
-                               list.Add ("Israel");\r
-                               list.Add ("Russia");\r
-                               return list;\r
-                       }\r
-\r
-                       public void DoRaiseDataSourceChangedEvent (EventArgs e)\r
-                       {\r
-                               RaiseDataSourceChangedEvent (e);\r
-                       }\r
+                       }
+               }
+
+               public class DS : ObjectDataSource
+               {
+                       public static List<string> GetList ()
+                       {
+                               List<string> list = new List<string> ();
+                               list.Add ("Norway");
+                               list.Add ("Sweden");
+                               list.Add ("France");
+                               list.Add ("Italy");
+                               list.Add ("Israel");
+                               list.Add ("Russia");
+                               return list;
+                       }
+
+                       public void DoRaiseDataSourceChangedEvent (EventArgs e)
+                       {
+                               RaiseDataSourceChangedEvent (e);
+                       }
                }
                
                public class Poker : FormView {
@@ -111,10 +111,10 @@ namespace MonoTests.System.Web.UI.WebControls
                        public bool ensureDataBound=false;
                        public bool controlHierarchy=false;
                        bool _onPageIndexChangingCalled = false;
-                       bool _onPageIndexChangedCalled = false;\r
+                       bool _onPageIndexChangedCalled = false;
                                                
                        public Poker () {                                                               
-                               TrackViewState ();\r
+                               TrackViewState ();
                        }
 
                        public object SaveState () {
@@ -124,8 +124,8 @@ namespace MonoTests.System.Web.UI.WebControls
                        public void LoadState (object state) {
                                LoadViewState (state);
                                
-                       }\r
-\r
+                       }
+
                        public HtmlTextWriterTag PokerTagKey
                        {
                                get { return base.TagKey; }
@@ -172,11 +172,11 @@ namespace MonoTests.System.Web.UI.WebControls
                        {
                                base.ExtractRowValues (filedValues, includeKeys);
                                
-                       }\r
-\r
-                       public bool IsRequiresDataBinding ()\r
-                       {\r
-                               return base.RequiresDataBinding;\r
+                       }
+
+                       public bool IsRequiresDataBinding ()
+                       {
+                               return base.RequiresDataBinding;
                        }
 
                        protected override void InitializePager (FormViewRow row, PagedDataSource pageData)
@@ -394,7 +394,7 @@ namespace MonoTests.System.Web.UI.WebControls
                         WebTest.CopyResource (GetType (), "FormViewInsertEditDelete.aspx", "FormViewInsertEditDelete.aspx");
 #endif
 
-               }\r
+               }
                
 
                [Test]
@@ -645,43 +645,43 @@ namespace MonoTests.System.Web.UI.WebControls
                        Assert.AreEqual (7, fv.DoCreateChildControls (myds, false), "CreateChildControlFromViewState");
                        myds.Remove ("item7");
 
-               }\r
-\r
-               class MyEnumSource : IEnumerable\r
-               {\r
-                       int _count;\r
-\r
-                       public MyEnumSource (int count) {\r
-                               _count = count;\r
-                       }\r
-\r
-                       #region IEnumerable Members\r
-\r
-                       public IEnumerator GetEnumerator () {\r
-\r
-                               for (int i = 0; i < _count; i++)\r
-                                       yield return i;\r
-                       }\r
-\r
-                       #endregion\r
-               }\r
-\r
-               [Test]\r
-               public void FormView_CreateChildControls2 ()\r
-               {\r
-                       Poker fv = new Poker ();\r
-                       fv.Page = new Page ();\r
-                       fv.DataSource = new MyEnumSource (20);\r
-                       fv.DataBind ();\r
-                       \r
-                       Assert.AreEqual (20, fv.PageCount, "CreateChildControls#0");\r
-\r
-                       Assert.AreEqual (0, fv.DoCreateChildControls (new MyEnumSource (0), true), "CreateChildControls#1");\r
-                       Assert.AreEqual (20, fv.DoCreateChildControls (new MyEnumSource (20), true), "CreateChildControls#2");\r
-\r
-                       Assert.AreEqual (0, fv.DoCreateChildControls (new object [0], false), "CreateChildControls#3");\r
-                       Assert.AreEqual (5, fv.DoCreateChildControls (new object [5], false), "CreateChildControls#4");\r
-               }\r
+               }
+
+               class MyEnumSource : IEnumerable
+               {
+                       int _count;
+
+                       public MyEnumSource (int count) {
+                               _count = count;
+                       }
+
+                       #region IEnumerable Members
+
+                       public IEnumerator GetEnumerator () {
+
+                               for (int i = 0; i < _count; i++)
+                                       yield return i;
+                       }
+
+                       #endregion
+               }
+
+               [Test]
+               public void FormView_CreateChildControls2 ()
+               {
+                       Poker fv = new Poker ();
+                       fv.Page = new Page ();
+                       fv.DataSource = new MyEnumSource (20);
+                       fv.DataBind ();
+                       
+                       Assert.AreEqual (20, fv.PageCount, "CreateChildControls#0");
+
+                       Assert.AreEqual (0, fv.DoCreateChildControls (new MyEnumSource (0), true), "CreateChildControls#1");
+                       Assert.AreEqual (20, fv.DoCreateChildControls (new MyEnumSource (20), true), "CreateChildControls#2");
+
+                       Assert.AreEqual (0, fv.DoCreateChildControls (new object [0], false), "CreateChildControls#3");
+                       Assert.AreEqual (5, fv.DoCreateChildControls (new object [5], false), "CreateChildControls#4");
+               }
 
                [Test]
                public void FormView_CreateDataSourceSelectArguments ()
@@ -1223,62 +1223,62 @@ namespace MonoTests.System.Web.UI.WebControls
                        Assert.AreEqual (true, pageIndexChanging, "AfterLastPageBubbleEvent");
                        Assert.AreEqual (5, newPageIndex, "FirstPageIndex");
 
-               }\r
-\r
-               [Test]\r
-               [Category("NunitWeb")]\r
-               [Category ("NotWorking")]\r
-               public void FormView_DataSourceChangedEvent ()\r
-               {\r
-                       WebTest t = new WebTest();\r
-                       PageDelegates pd = new PageDelegates ();\r
-                       pd.Load = FormView_Init;\r
-                       pd.PreRenderComplete = FormView_Load;\r
-                       t.Invoker = new PageInvoker (pd);\r
-                       t.Run ();\r
-                       FormRequest fr = new FormRequest (t.Response, "form1");\r
-                       fr.Controls.Add ("__EVENTTARGET");\r
-                       fr.Controls.Add ("__EVENTARGUMENT");\r
-                       fr.Controls["__EVENTTARGET"].Value = "";\r
-                       fr.Controls["__EVENTARGUMENT"].Value = "";\r
-                       t.Request = fr;\r
-                       t.Run ();\r
-                       if (t.UserData == null)\r
-                               Assert.Fail ("DataSourceChangedEvent#1");\r
-                       Assert.AreEqual ("Data_rebounded", t.UserData.ToString (), "DataSourceChangedEvent#2");\r
-               }\r
-\r
-               #region FormView_DataSourceChangedEvent\r
-               public static void FormView_Init(Page p)\r
-               {\r
-                       Poker fv = new Poker ();\r
-                       DS data = new DS ();\r
-                       p.Controls.Add (fv);\r
-                       p.Controls.Add (data);\r
-                       data.TypeName = typeof (DS).AssemblyQualifiedName;\r
-                       data.SelectMethod = "GetList";\r
-                       data.ID = "Data";\r
-                       fv.DataBinding += new EventHandler (data_DataBinding);\r
-                       fv.DataSourceID = "Data";\r
-               }\r
-\r
-               public static void FormView_Load (Page p)\r
-               {\r
-                       if (p.IsPostBack) {\r
-                               DS data = (DS) p.FindControl ("Data") ;\r
-                               if (data == null)\r
-                                       Assert.Fail ("Data soource control not created#1");\r
-                               data.DoRaiseDataSourceChangedEvent (new EventArgs ());\r
-                       }\r
-               }\r
-\r
-               public static void data_DataBinding (object sender, EventArgs e)\r
-               {\r
-                       if (((WebControl) sender).Page.IsPostBack) \r
-                               WebTest.CurrentTest.UserData = "Data_rebounded";\r
-               }\r
-               #endregion\r
-\r
+               }
+
+               [Test]
+               [Category("NunitWeb")]
+               [Category ("NotWorking")]
+               public void FormView_DataSourceChangedEvent ()
+               {
+                       WebTest t = new WebTest();
+                       PageDelegates pd = new PageDelegates ();
+                       pd.Load = FormView_Init;
+                       pd.PreRenderComplete = FormView_Load;
+                       t.Invoker = new PageInvoker (pd);
+                       t.Run ();
+                       FormRequest fr = new FormRequest (t.Response, "form1");
+                       fr.Controls.Add ("__EVENTTARGET");
+                       fr.Controls.Add ("__EVENTARGUMENT");
+                       fr.Controls["__EVENTTARGET"].Value = "";
+                       fr.Controls["__EVENTARGUMENT"].Value = "";
+                       t.Request = fr;
+                       t.Run ();
+                       if (t.UserData == null)
+                               Assert.Fail ("DataSourceChangedEvent#1");
+                       Assert.AreEqual ("Data_rebounded", t.UserData.ToString (), "DataSourceChangedEvent#2");
+               }
+
+               #region FormView_DataSourceChangedEvent
+               public static void FormView_Init(Page p)
+               {
+                       Poker fv = new Poker ();
+                       DS data = new DS ();
+                       p.Controls.Add (fv);
+                       p.Controls.Add (data);
+                       data.TypeName = typeof (DS).AssemblyQualifiedName;
+                       data.SelectMethod = "GetList";
+                       data.ID = "Data";
+                       fv.DataBinding += new EventHandler (data_DataBinding);
+                       fv.DataSourceID = "Data";
+               }
+
+               public static void FormView_Load (Page p)
+               {
+                       if (p.IsPostBack) {
+                               DS data = (DS) p.FindControl ("Data") ;
+                               if (data == null)
+                                       Assert.Fail ("Data soource control not created#1");
+                               data.DoRaiseDataSourceChangedEvent (new EventArgs ());
+                       }
+               }
+
+               public static void data_DataBinding (object sender, EventArgs e)
+               {
+                       if (((WebControl) sender).Page.IsPostBack) 
+                               WebTest.CurrentTest.UserData = "Data_rebounded";
+               }
+               #endregion
+
                [Test]
                public void FormView_Events ()
                {
@@ -2497,6 +2497,49 @@ CommandEventArgs cargs = new CommandEventArgs ("Page", "Prev");
                        fv.Page = new Page ();
                        PostBackOptions options = ((IPostBackContainer) fv).GetPostBackOptions (null);
                }
+
+               [Test]
+               [Category ("NunitWeb")]
+               public void FormView_RequiresDataBinding () {
+                       PageDelegates delegates = new PageDelegates ();
+                       delegates.LoadComplete = FormView_RequiresDataBinding_LoadComplete;
+                       PageInvoker invoker = new PageInvoker (delegates);
+                       WebTest t = new WebTest (invoker);
+                       t.Run ();
+               }
+
+               public static void FormView_RequiresDataBinding_LoadComplete (Page p) {
+                       Poker view = new Poker ();
+                       p.Form.Controls.Add (view);
+
+                       view.DataSource = new string [] { "A", "B", "C" };
+                       view.DataBind ();
+
+                       Assert.AreEqual (false, view.GetRequiresDataBinding ());
+
+                       view.PagerTemplate = new CompiledTemplateBuilder (BuildTemplateMethod);
+                       Assert.AreEqual (false, view.GetRequiresDataBinding (), "PagerTemplate was set");
+
+                       view.EmptyDataTemplate = new CompiledTemplateBuilder (BuildTemplateMethod);
+                       Assert.AreEqual (false, view.GetRequiresDataBinding (), "EmptyDataTemplate was set");
+
+                       view.HeaderTemplate = new CompiledTemplateBuilder (BuildTemplateMethod);
+                       Assert.AreEqual (false, view.GetRequiresDataBinding (), "HeaderTemplate was set");
+
+                       view.FooterTemplate = new CompiledTemplateBuilder (BuildTemplateMethod);
+                       Assert.AreEqual (false, view.GetRequiresDataBinding (), "FooterTemplate was set");
+
+                       view.EditItemTemplate = new CompiledTemplateBuilder (BuildTemplateMethod);
+                       Assert.AreEqual (false, view.GetRequiresDataBinding (), "EditItemTemplate was set");
+
+                       view.InsertItemTemplate = new CompiledTemplateBuilder (BuildTemplateMethod);
+                       Assert.AreEqual (false, view.GetRequiresDataBinding (), "InsertItemTemplate was set");
+
+                       view.ItemTemplate = new CompiledTemplateBuilder (BuildTemplateMethod);
+                       Assert.AreEqual (false, view.GetRequiresDataBinding (), "ItemTemplate was set");
+               }
+
+               public static void BuildTemplateMethod (Control c) { }
        }
 
        public class TestMyData
index 0f31cc58f1ced5245f7fafcff26c047085795812..44bf9ba42bc4c405890f99030f5668aeeb1241f1 100644 (file)
@@ -303,30 +303,34 @@ namespace MonoTests.System.Web.UI.WebControls
                {
                        RequiresDataBinding = value;
                }
-       }\r
-\r
+
+               public bool GetRequiresDataBinding () {
+                       return RequiresDataBinding;
+               }
+       }
+
        [Serializable]
        [TestFixture]
        public class GridViewTest
-       {\r
-               class DS : ObjectDataSource, IDataSource\r
-               {\r
-                       public static List<string> GetList ()\r
-                       {\r
-                               List<string> list = new List<string> ();\r
-                               list.Add ("Norway");\r
-                               list.Add ("Sweden");\r
-                               list.Add ("France");\r
-                               list.Add ("Italy");\r
-                               list.Add ("Israel");\r
-                               list.Add ("Russia");\r
-                               return list;\r
-                       }\r
-\r
-                       public void DoRaiseDataSourceChangedEvent (EventArgs e)\r
-                       {\r
-                               RaiseDataSourceChangedEvent (e);\r
-                       }\r
+       {
+               class DS : ObjectDataSource, IDataSource
+               {
+                       public static List<string> GetList ()
+                       {
+                               List<string> list = new List<string> ();
+                               list.Add ("Norway");
+                               list.Add ("Sweden");
+                               list.Add ("France");
+                               list.Add ("Italy");
+                               list.Add ("Israel");
+                               list.Add ("Russia");
+                               return list;
+                       }
+
+                       public void DoRaiseDataSourceChangedEvent (EventArgs e)
+                       {
+                               RaiseDataSourceChangedEvent (e);
+                       }
                }
 
                public class DataSourceObject
@@ -403,30 +407,30 @@ namespace MonoTests.System.Web.UI.WebControls
                                get { return _name; }
                                set { _name = value; }
                        }
-               }\r
-\r
+               }
+
                public const string BOOLFIELD = "bool";
                public const string STRINGFIELD = "str";
                ArrayList myds = new ArrayList ();
-               public bool InitilizePager;\r
-\r
-               [TestFixtureSetUp]\r
-               public void GridViewInit ()\r
-               {\r
-\r
-                       myds.Add ("Norway");\r
-                       myds.Add ("Sweden");\r
-                       myds.Add ("France");\r
-                       myds.Add ("Italy");\r
-                       myds.Add ("Israel");\r
-                       myds.Add ("Russia");\r
-#if VISUAL_STUDIO\r
-                        WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.GridViewUpdate.aspx", "GridViewUpdate.aspx");\r
-                        WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.NoEventValidation.aspx", "NoEventValidation.aspx");\r
-#else\r
-                       WebTest.CopyResource (GetType (), "GridViewUpdate.aspx", "GridViewUpdate.aspx");\r
-                       WebTest.CopyResource (GetType (), "NoEventValidation.aspx", "NoEventValidation.aspx");\r
-#endif\r
+               public bool InitilizePager;
+
+               [TestFixtureSetUp]
+               public void GridViewInit ()
+               {
+
+                       myds.Add ("Norway");
+                       myds.Add ("Sweden");
+                       myds.Add ("France");
+                       myds.Add ("Italy");
+                       myds.Add ("Israel");
+                       myds.Add ("Russia");
+#if VISUAL_STUDIO
+                        WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.GridViewUpdate.aspx", "GridViewUpdate.aspx");
+                        WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.NoEventValidation.aspx", "NoEventValidation.aspx");
+#else
+                       WebTest.CopyResource (GetType (), "GridViewUpdate.aspx", "GridViewUpdate.aspx");
+                       WebTest.CopyResource (GetType (), "NoEventValidation.aspx", "NoEventValidation.aspx");
+#endif
                }
 
                [Test]
@@ -888,37 +892,37 @@ namespace MonoTests.System.Web.UI.WebControls
                protected void Gridview_sorting (object sender, GridViewSortEventArgs e)
                {
                        sortingaction = true;
-               }\r
-\r
-               [Test]\r
-               public void GridView_IsBindableType ()\r
-               {\r
-                       Type [] types = new Type [] {\r
-                               typeof(Boolean), \r
-                               typeof(Byte),\r
-                               typeof(Char),\r
-                               typeof(DateTime),\r
-                               typeof(Decimal),\r
-                               typeof(Double),\r
-                               typeof(Guid),\r
-                               typeof(Int16),\r
-                               typeof(Int32),\r
-                               typeof(Int64),\r
-                               typeof(SByte),\r
-                               typeof(Single),\r
-                               typeof(String),\r
-                               typeof(UInt16),\r
-                               typeof(UInt32),\r
-                               typeof(UInt64)\r
-                                };\r
-\r
-                       GridView g = new GridView ();\r
-                       foreach (Type type in types)\r
-                               Assert.AreEqual (true, g.IsBindableType (type), type.ToString ());\r
-\r
-                       Assert.AreEqual (false, g.IsBindableType (typeof (Enum)), "test");\r
-                       Assert.AreEqual (false, g.IsBindableType (typeof (Object)), "test");\r
-               }\r
+               }
+
+               [Test]
+               public void GridView_IsBindableType ()
+               {
+                       Type [] types = new Type [] {
+                               typeof(Boolean), 
+                               typeof(Byte),
+                               typeof(Char),
+                               typeof(DateTime),
+                               typeof(Decimal),
+                               typeof(Double),
+                               typeof(Guid),
+                               typeof(Int16),
+                               typeof(Int32),
+                               typeof(Int64),
+                               typeof(SByte),
+                               typeof(Single),
+                               typeof(String),
+                               typeof(UInt16),
+                               typeof(UInt32),
+                               typeof(UInt64)
+                                };
+
+                       GridView g = new GridView ();
+                       foreach (Type type in types)
+                               Assert.AreEqual (true, g.IsBindableType (type), type.ToString ());
+
+                       Assert.AreEqual (false, g.IsBindableType (typeof (Enum)), "test");
+                       Assert.AreEqual (false, g.IsBindableType (typeof (Object)), "test");
+               }
 
                [Test]
                public void GridView_CreateAutoGeneratedColumn ()
@@ -1415,62 +1419,62 @@ namespace MonoTests.System.Web.UI.WebControls
                private void gv_PageIndexChanged (object sender, EventArgs e)
                {
                        pageIndexChanged = true;
-               }\r
-\r
-               [Test]\r
-               [Category ("NunitWeb")]\r
-               [Category ("NotWorking")]\r
-               public void GridView_DataSourceChangedEvent ()\r
-               {\r
-                       WebTest t = new WebTest ();\r
-                       PageDelegates pd = new PageDelegates ();\r
-                       pd.Load = GridView_Init;\r
-                       pd.PreRenderComplete = GridView_Load;\r
-                       t.Invoker = new PageInvoker (pd);\r
-                       t.Run ();\r
-                       FormRequest fr = new FormRequest (t.Response, "form1");\r
-                       fr.Controls.Add ("__EVENTTARGET");\r
-                       fr.Controls.Add ("__EVENTARGUMENT");\r
-                       fr.Controls["__EVENTTARGET"].Value = "";\r
-                       fr.Controls["__EVENTARGUMENT"].Value = "";\r
-                       t.Request = fr;\r
-                       t.Run ();\r
-                       if (t.UserData == null)\r
-                               Assert.Fail ("DataSourceChangedEvent#1");\r
-                       Assert.AreEqual ("Data_rebounded", t.UserData.ToString (), "DataSourceChangedEvent#2");\r
-               }\r
-\r
-               #region GridView_DataSourceChangedEvent\r
-               public static void GridView_Init (Page p)\r
-               {\r
-                       PokerGridView gv = new PokerGridView ();\r
-                       DS data = new DS ();\r
-                       p.Controls.Add (gv);\r
-                       p.Controls.Add (data);\r
-                       data.TypeName = typeof (DS).AssemblyQualifiedName;\r
-                       data.SelectMethod = "GetList";\r
-                       data.ID = "Data";\r
-                       gv.DataBinding += new EventHandler (data_DataBinding);\r
-                       gv.DataSourceID = "Data";\r
-               }\r
-\r
-               public static void GridView_Load (Page p)\r
-               {\r
-                       if (p.IsPostBack) {\r
-                               DS data = (DS) p.FindControl ("Data");\r
-                               if (data == null)\r
-                                       Assert.Fail ("Data soource control not created#1");\r
-                               data.DoRaiseDataSourceChangedEvent (new EventArgs ());\r
-                       }\r
-               }\r
-\r
-               public static void data_DataBinding (object sender, EventArgs e)\r
-               {\r
-                       if (((WebControl) sender).Page.IsPostBack)\r
-                               WebTest.CurrentTest.UserData = "Data_rebounded";\r
-               }\r
-               #endregion\r
-\r
+               }
+
+               [Test]
+               [Category ("NunitWeb")]
+               [Category ("NotWorking")]
+               public void GridView_DataSourceChangedEvent ()
+               {
+                       WebTest t = new WebTest ();
+                       PageDelegates pd = new PageDelegates ();
+                       pd.Load = GridView_Init;
+                       pd.PreRenderComplete = GridView_Load;
+                       t.Invoker = new PageInvoker (pd);
+                       t.Run ();
+                       FormRequest fr = new FormRequest (t.Response, "form1");
+                       fr.Controls.Add ("__EVENTTARGET");
+                       fr.Controls.Add ("__EVENTARGUMENT");
+                       fr.Controls["__EVENTTARGET"].Value = "";
+                       fr.Controls["__EVENTARGUMENT"].Value = "";
+                       t.Request = fr;
+                       t.Run ();
+                       if (t.UserData == null)
+                               Assert.Fail ("DataSourceChangedEvent#1");
+                       Assert.AreEqual ("Data_rebounded", t.UserData.ToString (), "DataSourceChangedEvent#2");
+               }
+
+               #region GridView_DataSourceChangedEvent
+               public static void GridView_Init (Page p)
+               {
+                       PokerGridView gv = new PokerGridView ();
+                       DS data = new DS ();
+                       p.Controls.Add (gv);
+                       p.Controls.Add (data);
+                       data.TypeName = typeof (DS).AssemblyQualifiedName;
+                       data.SelectMethod = "GetList";
+                       data.ID = "Data";
+                       gv.DataBinding += new EventHandler (data_DataBinding);
+                       gv.DataSourceID = "Data";
+               }
+
+               public static void GridView_Load (Page p)
+               {
+                       if (p.IsPostBack) {
+                               DS data = (DS) p.FindControl ("Data");
+                               if (data == null)
+                                       Assert.Fail ("Data soource control not created#1");
+                               data.DoRaiseDataSourceChangedEvent (new EventArgs ());
+                       }
+               }
+
+               public static void data_DataBinding (object sender, EventArgs e)
+               {
+                       if (((WebControl) sender).Page.IsPostBack)
+                               WebTest.CurrentTest.UserData = "Data_rebounded";
+               }
+               #endregion
+
                [Test]
                public void GridView_PerformDataBiding ()
                {
@@ -2241,8 +2245,8 @@ namespace MonoTests.System.Web.UI.WebControls
                        t.Request = fr;
                        pageHTML = t.Run ();
                        Assert.AreEqual (0, t.UserData , "ObjectDataSource after delete from grid");
-               }\r
-\r
+               }
+
                public static void GridView_checkrows (Page p)
                {
                        GridView grid = p.FindControl ("Grid") as GridView;
@@ -2348,7 +2352,7 @@ namespace MonoTests.System.Web.UI.WebControls
                        GridView grid = new GridView ();
                        ObjectDataSource ds = new ObjectDataSource ();
 
-                       ds.ID = "ObjectDataSource2";\r
+                       ds.ID = "ObjectDataSource2";
                        ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataObject";
                        ds.SelectMethod = "Select";
                        ds.DeleteMethod = "Delete";
@@ -2461,10 +2465,10 @@ namespace MonoTests.System.Web.UI.WebControls
 
                        b.DataSource = myds;
                        b.DataBind ();
-               }\r
-\r
-\r
-\r
+               }
+
+
+
                public void b_RowEditing (object o, GridViewEditEventArgs e)
                {
                        ((GridView) o).Page.Controls.Add (new LiteralControl ("EditSuccess"));
@@ -2494,444 +2498,444 @@ namespace MonoTests.System.Web.UI.WebControls
                }
 
 
-               //////// Post back events /////////////\r
-               [Test]\r
-               [Category ("NunitWeb")]\r
-               public void GridView_PostBackRowEvents ()\r
-               {\r
-                       WebTest t = new WebTest ("NoEventValidation.aspx");\r
-                       t.UserData = new Hashtable ();\r
-                       t.Invoker = PageInvoker.CreateOnInit (new PageDelegate (_PostBackRowEvents));\r
-                       string html = t.Run ();\r
-\r
-                       // Check if events done\r
-                       CustomEventAssert(t,"RowCreated");\r
-                       CustomEventAssert (t,"RowDataBound");\r
-                       \r
-                       // Remove grid to edit mode (Edit button pressed)                       \r
-                       FormRequest fr = new FormRequest (t.Response, "form1");\r
-                       fr.Controls.Add ("__EVENTTARGET");\r
-                       fr.Controls.Add ("__EVENTARGUMENT");\r
-                       fr.Controls["__EVENTTARGET"].Value = "Grid";\r
-                       fr.Controls["__EVENTARGUMENT"].Value = "Edit$0";\r
-                       t.Request = fr;\r
-                       t.UserData = new Hashtable ();\r
-                       html = t.Run ();\r
-\r
-                       // Check if events done\r
-                       CustomEventAssert (t,"RowCreated");\r
-                       CustomEventAssert (t,"RowCommand");\r
-                       CustomEventAssert (t,"RowEditing");\r
-                       CustomEventAssert (t,"RowDataBound");\r
-\r
-                       // Cancel button pressed\r
-                       fr = new FormRequest (t.Response, "form1");\r
-                       fr.Controls.Add ("__EVENTTARGET");\r
-                       fr.Controls.Add ("__EVENTARGUMENT");\r
-                       fr.Controls["__EVENTTARGET"].Value = "Grid";\r
-                       fr.Controls["__EVENTARGUMENT"].Value = "Cancel$0";\r
-                       t.Request = fr;\r
-                       t.UserData = new Hashtable ();\r
-                       html = t.Run ();\r
-\r
-                       // Check if events done\r
-                       CustomEventAssert (t,"RowCreated");\r
-                       CustomEventAssert (t,"RowCommand");\r
-                       CustomEventAssert (t,"RowCancelingEdit");\r
-                       CustomEventAssert (t,"RowDataBound");\r
-               }\r
-\r
-               [Test]\r
-               [Category ("NunitWeb")]\r
-               public void GridView_PostBackUpdateEvents ()\r
-               {\r
-                       WebTest t = new WebTest ("NoEventValidation.aspx");\r
-                       t.UserData = new Hashtable ();\r
-                       t.Invoker = PageInvoker.CreateOnInit (new PageDelegate (_PostBackRowEvents));\r
-                       string html = t.Run ();\r
-\r
-                       // Remove grid to edit mode (Edit button pressed)                       \r
-                       FormRequest fr = new FormRequest (t.Response, "form1");\r
-                       fr.Controls.Add ("__EVENTTARGET");\r
-                       fr.Controls.Add ("__EVENTARGUMENT");\r
-                       fr.Controls["__EVENTTARGET"].Value = "Grid";\r
-                       fr.Controls["__EVENTARGUMENT"].Value = "Edit$0";\r
-                       t.Request = fr;\r
-                       html = t.Run ();\r
-\r
-                       // Update button pressed\r
-                       fr = new FormRequest (t.Response, "form1");\r
-                       fr.Controls.Add ("__EVENTTARGET");\r
-                       fr.Controls.Add ("__EVENTARGUMENT");\r
-#if DOT_NET\r
-                       fr.Controls.Add ("Grid$ctl02$ctl02");\r
-                       fr.Controls.Add ("Grid$ctl02$ctl03");\r
-                       fr.Controls.Add ("Grid$ctl02$ctl04");\r
-#else\r
-                       fr.Controls.Add ("Grid$ctl02$ctl03");\r
-                       fr.Controls.Add ("Grid$ctl02$ctl04");\r
-                       fr.Controls.Add ("Grid$ctl02$ctl05");\r
-#endif\r
-                       fr.Controls["__EVENTTARGET"].Value = "Grid$ctl02$ctl00";\r
-                       fr.Controls["__EVENTARGUMENT"].Value = "";\r
-#if DOT_NET\r
-                       fr.Controls["Grid$ctl02$ctl02"].Value = "1001";\r
-                       fr.Controls["Grid$ctl02$ctl03"].Value = "Mahesh";\r
-                       fr.Controls["Grid$ctl02$ctl04"].Value = "Chand";\r
-#else\r
-                       fr.Controls ["Grid$ctl02$ctl03"].Value = "1001";\r
-                       fr.Controls ["Grid$ctl02$ctl04"].Value = "Mahesh";\r
-                       fr.Controls ["Grid$ctl02$ctl05"].Value = "Chand";\r
-#endif\r
-\r
-                       t.Request = fr;\r
-                       t.UserData = new Hashtable ();\r
-                       html = t.Run ();\r
-\r
-                       // Check if events done\r
-                       CustomEventAssert (t, "RowCreated");\r
-                       CustomEventAssert (t, "RowCommand");\r
-                       CustomEventAssert (t, "RowUpdating");\r
-                       CustomEventAssert (t, "RowUpdated");\r
-                       CustomEventAssert (t, "RowDataBound");\r
-               }\r
-\r
-               [Test]\r
-               [Category ("NunitWeb")]\r
-               public void GridView_PostBackPagingEvents ()\r
-               {\r
-                       WebTest t = new WebTest ("NoEventValidation.aspx");\r
-                       t.UserData = new Hashtable ();\r
-                       t.Invoker = PageInvoker.CreateOnInit (new PageDelegate (_PostBackPagingEvents));\r
-                       string html = t.Run ();\r
-\r
-                       // Move to page 2\r
-                       FormRequest fr = new FormRequest (t.Response, "form1");\r
-                       fr.Controls.Add ("__EVENTTARGET");\r
-                       fr.Controls.Add ("__EVENTARGUMENT");\r
-                       fr.Controls["__EVENTTARGET"].Value = "Grid";\r
-                       fr.Controls["__EVENTARGUMENT"].Value = "Page$2";\r
-                       t.Request = fr;\r
-                       html = t.Run ();\r
-\r
-                       // Check if events done\r
-                       CustomEventAssert (t, "PageIndexChanging");\r
-                       CustomEventAssert (t, "PageIndexChanged");\r
-               }\r
-\r
-               [Test]\r
-               [Category ("NunitWeb")]\r
-               public void GridView_PostBackSortingEvents ()\r
-               {\r
-                       WebTest t = new WebTest ("NoEventValidation.aspx");\r
-                       t.UserData = new Hashtable ();\r
-                       t.Invoker = PageInvoker.CreateOnInit (new PageDelegate (_PostBackSortingEvents));\r
-                       string html = t.Run ();\r
-\r
-                       // Sort by ID\r
-                       FormRequest fr = new FormRequest (t.Response, "form1");\r
-                       fr.Controls.Add ("__EVENTTARGET");\r
-                       fr.Controls.Add ("__EVENTARGUMENT");\r
-                       fr.Controls["__EVENTTARGET"].Value = "Grid";\r
-                       fr.Controls["__EVENTARGUMENT"].Value = "Sort$ID";\r
-                       t.Request = fr;\r
-                       html = t.Run ();\r
-\r
-                       // Check if events done\r
-                       CustomEventAssert (t, "Sorting");\r
-                       CustomEventAssert (t, "Sorted");\r
-               }\r
-\r
-               [Test]\r
-               [Category ("NunitWeb")]\r
-               public void GridView_PostBackSelectingEvents ()\r
-               {\r
-                       WebTest t = new WebTest ("NoEventValidation.aspx");\r
-                       t.UserData = new Hashtable ();\r
-                       t.Invoker = PageInvoker.CreateOnInit (new PageDelegate (_PostBackSelectingEvents));\r
-                       string html = t.Run ();\r
-\r
-                       // Select\r
-                       FormRequest fr = new FormRequest (t.Response, "form1");\r
-                       fr.Controls.Add ("__EVENTTARGET");\r
-                       fr.Controls.Add ("__EVENTARGUMENT");\r
-                       fr.Controls["__EVENTTARGET"].Value = "Grid";\r
-                       fr.Controls["__EVENTARGUMENT"].Value = "Select$0";\r
-                       t.Request = fr;\r
-                       html = t.Run ();\r
-\r
-                       // Check if events done\r
-                       CustomEventAssert (t, "SelectedIndexChanging");\r
-                       CustomEventAssert (t, "SelectedIndexChanged");\r
-               }\r
-\r
-               #region PostBackEvents_helpers\r
-               \r
-               private void CustomEventAssert (WebTest t, string c)\r
-               {\r
-                       Hashtable local = t.UserData as Hashtable;\r
-                       if (local == null)\r
-                               Assert.Fail ("User data not created");\r
-                       if(!local.ContainsValue(c))\r
-                               Assert.Fail (c + " not fired!"); \r
-               }\r
-\r
-               public static void _PostBackSelectingEvents (Page p)\r
-               {\r
-                       if (!p.IsPostBack)\r
-                               DataObjects.Reset ();\r
-\r
-                       GridView grid = new GridView ();\r
-                       ObjectDataSource ds = new ObjectDataSource ();\r
-                       grid.SelectedIndexChanged += new EventHandler (grid_SelectedIndexChanged);\r
-                       grid.SelectedIndexChanging += new GridViewSelectEventHandler (grid_SelectedIndexChanging);\r
-                       ds.ID = "ObjectDataSource2";\r
-                       ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataObjects";\r
-                       ds.SelectMethod = "Select";\r
-                       ds.DeleteMethod = "Delete";\r
-                       ds.InsertMethod = "Insert";\r
-                       ds.UpdateMethod = "Update";\r
-                       grid.ID = "Grid";\r
-                       grid.AutoGenerateColumns = true;\r
-                       grid.AutoGenerateSelectButton = true;\r
-                       grid.DataSourceID = "ObjectDataSource2";\r
-                       p.Form.Controls.Add (ds);\r
-                       p.Form.Controls.Add (grid);\r
-               }\r
-\r
-               public static void _PostBackSortingEvents (Page p)\r
-               {\r
-                       if (!p.IsPostBack)\r
-                               DataObjects.Reset ();\r
-\r
-                       GridView grid = new GridView ();\r
-                       ObjectDataSource ds = new ObjectDataSource ();\r
-                       ds.ID = "ObjectDataSource2";\r
-                       ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataObjects";\r
-                       ds.SelectMethod = "Select";\r
-                       ds.DeleteMethod = "Delete";\r
-                       ds.InsertMethod = "Insert";\r
-                       ds.UpdateMethod = "Update";\r
-\r
-                       grid.Sorted += new EventHandler (grid_Sorted);\r
-                       grid.Sorting += new GridViewSortEventHandler (grid_Sorting);\r
-                       grid.AllowSorting = true;\r
-                       grid.ID = "Grid";\r
-                       grid.AutoGenerateColumns = true;\r
-                       \r
-                       grid.DataSourceID = "ObjectDataSource2";\r
-                       p.Form.Controls.Add (ds);\r
-                       p.Form.Controls.Add (grid);\r
-               }\r
-\r
-               \r
-               public static void _PostBackPagingEvents (Page p)\r
-               {\r
-                       if (!p.IsPostBack)\r
-                               DataObjects.Reset ();\r
-\r
-                       GridView grid = new GridView ();\r
-                       ObjectDataSource ds = new ObjectDataSource ();\r
-                       ds.ID = "ObjectDataSource2";\r
-                       ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataObjects";\r
-                       ds.SelectMethod = "Select";\r
-                       ds.DeleteMethod = "Delete";\r
-                       ds.InsertMethod = "Insert";\r
-                       ds.UpdateMethod = "Update";\r
-\r
-                       grid.PageIndexChanged += new EventHandler (grid_PageIndexChanged);\r
-                       grid.PageIndexChanging += new GridViewPageEventHandler (grid_PageIndexChanging);\r
-                       grid.AllowPaging = true;\r
-                       grid.ID = "Grid";\r
-                       grid.AutoGenerateColumns = false;\r
-                       grid.PageSize = 1;\r
-\r
-                       BoundField field = new BoundField ();\r
-                       field.DataField = "ID";\r
-                       grid.Columns.Add (field);\r
-\r
-                       field = new BoundField ();\r
-                       field.DataField = "FName";\r
-                       grid.Columns.Add (field);\r
-\r
-                       field = new BoundField ();\r
-                       field.DataField = "LName";\r
-                       grid.Columns.Add (field);\r
-\r
-                       grid.DataSourceID = "ObjectDataSource2";\r
-                       p.Form.Controls.Add (ds);\r
-                       p.Form.Controls.Add (grid);\r
-               }\r
-\r
-               public static void _PostBackRowEvents (Page p)\r
-               {\r
-                       if (!p.IsPostBack)\r
-                               DataObject.Reset ();\r
-\r
-                       GridView grid = new GridView ();\r
-                       ObjectDataSource ds = new ObjectDataSource ();\r
-                       ds.ID = "ObjectDataSource2";\r
-                       ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataObject";\r
-                       ds.SelectMethod = "Select";\r
-                       ds.DeleteMethod = "Delete";\r
-                       ds.InsertMethod = "Insert";\r
-                       ds.UpdateMethod = "Update";\r
-\r
-\r
-                       grid.RowCancelingEdit += new GridViewCancelEditEventHandler (grid_RowCancelingEdit);\r
-                       grid.RowCommand += new GridViewCommandEventHandler (grid_RowCommand);\r
-                       grid.RowCreated += new GridViewRowEventHandler (grid_RowCreated);\r
-                       grid.RowDataBound += new GridViewRowEventHandler (grid_RowDataBound);\r
-                       grid.RowEditing += new GridViewEditEventHandler (grid__RowEditing);\r
-                       grid.RowUpdating += new GridViewUpdateEventHandler (grid_RowUpdating);\r
-                       grid.RowUpdated += new GridViewUpdatedEventHandler (grid_RowUpdated);\r
-                       grid.PageIndexChanged += new EventHandler (grid_PageIndexChanged);\r
-                       grid.PageIndexChanging += new GridViewPageEventHandler (grid_PageIndexChanging);\r
-\r
-                       Parameter p1 = new Parameter ("ID", TypeCode.String);\r
-                       Parameter p2 = new Parameter ("FName", TypeCode.String);\r
-                       Parameter p3 = new Parameter ("LName", TypeCode.String);\r
-\r
-                       ds.UpdateParameters.Add (p1);\r
-                       ds.UpdateParameters.Add (p2);\r
-                       ds.UpdateParameters.Add (p3);\r
-\r
-                       grid.ID = "Grid";\r
-                       grid.AutoGenerateEditButton = true;\r
-\r
-                       grid.AutoGenerateColumns = false;\r
-\r
-                       BoundField field = new BoundField ();\r
-                       field.DataField = "ID";\r
-                       grid.Columns.Add (field);\r
-\r
-                       field = new BoundField ();\r
-                       field.DataField = "FName";\r
-                       grid.Columns.Add (field);\r
-\r
-                       field = new BoundField ();\r
-                       field.DataField = "LName";\r
-                       grid.Columns.Add (field);\r
-\r
-                       grid.DataSourceID = "ObjectDataSource2";\r
-                       p.Form.Controls.Add (ds);\r
-                       p.Form.Controls.Add (grid);\r
-               }\r
-\r
-               static void grid_SelectedIndexChanging (object sender, GridViewSelectEventArgs e)\r
-               {\r
-                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;\r
-                       if (local != null) {\r
-                               local.Add (local.Count, "SelectedIndexChanging");\r
-                       }\r
-               }\r
-\r
-               static void grid_SelectedIndexChanged (object sender, EventArgs e)\r
-               {\r
-                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;\r
-                       if (local != null) {\r
-                               local.Add (local.Count, "SelectedIndexChanged");\r
-                       }\r
-               }\r
-\r
-               static void grid_PageIndexChanging (object sender, GridViewPageEventArgs e)\r
-               {\r
-                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;\r
-                       if (local != null) {\r
-                               local.Add (local.Count, "PageIndexChanging");\r
-                       }\r
-               }\r
-\r
-               static void grid_PageIndexChanged (object sender, EventArgs e)\r
-               {\r
-                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;\r
-                       if (local != null) {\r
-                               local.Add (local.Count, "PageIndexChanged");\r
-                       }\r
-               }\r
-\r
-               public static void grid_RowUpdated (object sender, GridViewUpdatedEventArgs e)\r
-               {\r
-                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;\r
-                       if (local != null) {\r
-                               local.Add (local.Count, "RowUpdated");\r
-                       }\r
-               }\r
-\r
-               public static void grid_RowUpdating (object sender, GridViewUpdateEventArgs e)\r
-               {\r
-                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;\r
-                       if (local != null) {\r
-                               local.Add (local.Count, "RowUpdating");\r
-                       }\r
-               }\r
-\r
-               public static void grid_RowEditing (object sender, GridViewEditEventArgs e)\r
-               {\r
-                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;\r
-                       if (local != null) {\r
-                               local.Add (local.Count, "RowEditing");\r
-                       }\r
-               }\r
-\r
-               public static void grid_RowDataBound (object sender, GridViewRowEventArgs e)\r
-               {\r
-                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;\r
-                       if (local != null) {\r
-                               local.Add (local.Count, "RowDataBound");\r
-                       }\r
-               }\r
-\r
-               public static void grid_RowCreated (object sender, GridViewRowEventArgs e)\r
-               {\r
-                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;\r
-                       if (local != null) {\r
-                               local.Add (local.Count, "RowCreated");\r
-                       }\r
-               }\r
-\r
-               public static void grid_RowCommand (object sender, GridViewCommandEventArgs e)\r
-               {\r
-                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;\r
-                       if (local != null) {\r
-                               local.Add (local.Count, "RowCommand");\r
-                       }\r
-               }\r
-\r
-               public static void grid_RowCancelingEdit (object sender, GridViewCancelEditEventArgs e)\r
-               {\r
-                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;\r
-                       if (local != null) {\r
-                               local.Add (local.Count, "RowCancelingEdit");\r
-                       }\r
-               }\r
-\r
-               public static void grid__RowEditing (object sender, GridViewEditEventArgs e)\r
-               {\r
-                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;\r
-                       if (local != null) {\r
-                               local.Add (local.Count, "RowEditing");\r
-                       }\r
-               }\r
-\r
-               static void grid_Sorting (object sender, GridViewSortEventArgs e)\r
-               {\r
-                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;\r
-                       if (local != null) {\r
-                               local.Add (local.Count, "Sorting");\r
-                       }\r
-               }\r
-\r
-               static void grid_Sorted (object sender, EventArgs e)\r
-               {\r
-                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;\r
-                       if (local != null) {\r
-                               local.Add (local.Count, "Sorted");\r
-                       }\r
-               }\r
-\r
-               #endregion\r
-\r
+               //////// Post back events /////////////
+               [Test]
+               [Category ("NunitWeb")]
+               public void GridView_PostBackRowEvents ()
+               {
+                       WebTest t = new WebTest ("NoEventValidation.aspx");
+                       t.UserData = new Hashtable ();
+                       t.Invoker = PageInvoker.CreateOnInit (new PageDelegate (_PostBackRowEvents));
+                       string html = t.Run ();
+
+                       // Check if events done
+                       CustomEventAssert(t,"RowCreated");
+                       CustomEventAssert (t,"RowDataBound");
+                       
+                       // Remove grid to edit mode (Edit button pressed)                       
+                       FormRequest fr = new FormRequest (t.Response, "form1");
+                       fr.Controls.Add ("__EVENTTARGET");
+                       fr.Controls.Add ("__EVENTARGUMENT");
+                       fr.Controls["__EVENTTARGET"].Value = "Grid";
+                       fr.Controls["__EVENTARGUMENT"].Value = "Edit$0";
+                       t.Request = fr;
+                       t.UserData = new Hashtable ();
+                       html = t.Run ();
+
+                       // Check if events done
+                       CustomEventAssert (t,"RowCreated");
+                       CustomEventAssert (t,"RowCommand");
+                       CustomEventAssert (t,"RowEditing");
+                       CustomEventAssert (t,"RowDataBound");
+
+                       // Cancel button pressed
+                       fr = new FormRequest (t.Response, "form1");
+                       fr.Controls.Add ("__EVENTTARGET");
+                       fr.Controls.Add ("__EVENTARGUMENT");
+                       fr.Controls["__EVENTTARGET"].Value = "Grid";
+                       fr.Controls["__EVENTARGUMENT"].Value = "Cancel$0";
+                       t.Request = fr;
+                       t.UserData = new Hashtable ();
+                       html = t.Run ();
+
+                       // Check if events done
+                       CustomEventAssert (t,"RowCreated");
+                       CustomEventAssert (t,"RowCommand");
+                       CustomEventAssert (t,"RowCancelingEdit");
+                       CustomEventAssert (t,"RowDataBound");
+               }
+
+               [Test]
+               [Category ("NunitWeb")]
+               public void GridView_PostBackUpdateEvents ()
+               {
+                       WebTest t = new WebTest ("NoEventValidation.aspx");
+                       t.UserData = new Hashtable ();
+                       t.Invoker = PageInvoker.CreateOnInit (new PageDelegate (_PostBackRowEvents));
+                       string html = t.Run ();
+
+                       // Remove grid to edit mode (Edit button pressed)                       
+                       FormRequest fr = new FormRequest (t.Response, "form1");
+                       fr.Controls.Add ("__EVENTTARGET");
+                       fr.Controls.Add ("__EVENTARGUMENT");
+                       fr.Controls["__EVENTTARGET"].Value = "Grid";
+                       fr.Controls["__EVENTARGUMENT"].Value = "Edit$0";
+                       t.Request = fr;
+                       html = t.Run ();
+
+                       // Update button pressed
+                       fr = new FormRequest (t.Response, "form1");
+                       fr.Controls.Add ("__EVENTTARGET");
+                       fr.Controls.Add ("__EVENTARGUMENT");
+#if DOT_NET
+                       fr.Controls.Add ("Grid$ctl02$ctl02");
+                       fr.Controls.Add ("Grid$ctl02$ctl03");
+                       fr.Controls.Add ("Grid$ctl02$ctl04");
+#else
+                       fr.Controls.Add ("Grid$ctl02$ctl03");
+                       fr.Controls.Add ("Grid$ctl02$ctl04");
+                       fr.Controls.Add ("Grid$ctl02$ctl05");
+#endif
+                       fr.Controls["__EVENTTARGET"].Value = "Grid$ctl02$ctl00";
+                       fr.Controls["__EVENTARGUMENT"].Value = "";
+#if DOT_NET
+                       fr.Controls["Grid$ctl02$ctl02"].Value = "1001";
+                       fr.Controls["Grid$ctl02$ctl03"].Value = "Mahesh";
+                       fr.Controls["Grid$ctl02$ctl04"].Value = "Chand";
+#else
+                       fr.Controls ["Grid$ctl02$ctl03"].Value = "1001";
+                       fr.Controls ["Grid$ctl02$ctl04"].Value = "Mahesh";
+                       fr.Controls ["Grid$ctl02$ctl05"].Value = "Chand";
+#endif
+
+                       t.Request = fr;
+                       t.UserData = new Hashtable ();
+                       html = t.Run ();
+
+                       // Check if events done
+                       CustomEventAssert (t, "RowCreated");
+                       CustomEventAssert (t, "RowCommand");
+                       CustomEventAssert (t, "RowUpdating");
+                       CustomEventAssert (t, "RowUpdated");
+                       CustomEventAssert (t, "RowDataBound");
+               }
+
+               [Test]
+               [Category ("NunitWeb")]
+               public void GridView_PostBackPagingEvents ()
+               {
+                       WebTest t = new WebTest ("NoEventValidation.aspx");
+                       t.UserData = new Hashtable ();
+                       t.Invoker = PageInvoker.CreateOnInit (new PageDelegate (_PostBackPagingEvents));
+                       string html = t.Run ();
+
+                       // Move to page 2
+                       FormRequest fr = new FormRequest (t.Response, "form1");
+                       fr.Controls.Add ("__EVENTTARGET");
+                       fr.Controls.Add ("__EVENTARGUMENT");
+                       fr.Controls["__EVENTTARGET"].Value = "Grid";
+                       fr.Controls["__EVENTARGUMENT"].Value = "Page$2";
+                       t.Request = fr;
+                       html = t.Run ();
+
+                       // Check if events done
+                       CustomEventAssert (t, "PageIndexChanging");
+                       CustomEventAssert (t, "PageIndexChanged");
+               }
+
+               [Test]
+               [Category ("NunitWeb")]
+               public void GridView_PostBackSortingEvents ()
+               {
+                       WebTest t = new WebTest ("NoEventValidation.aspx");
+                       t.UserData = new Hashtable ();
+                       t.Invoker = PageInvoker.CreateOnInit (new PageDelegate (_PostBackSortingEvents));
+                       string html = t.Run ();
+
+                       // Sort by ID
+                       FormRequest fr = new FormRequest (t.Response, "form1");
+                       fr.Controls.Add ("__EVENTTARGET");
+                       fr.Controls.Add ("__EVENTARGUMENT");
+                       fr.Controls["__EVENTTARGET"].Value = "Grid";
+                       fr.Controls["__EVENTARGUMENT"].Value = "Sort$ID";
+                       t.Request = fr;
+                       html = t.Run ();
+
+                       // Check if events done
+                       CustomEventAssert (t, "Sorting");
+                       CustomEventAssert (t, "Sorted");
+               }
+
+               [Test]
+               [Category ("NunitWeb")]
+               public void GridView_PostBackSelectingEvents ()
+               {
+                       WebTest t = new WebTest ("NoEventValidation.aspx");
+                       t.UserData = new Hashtable ();
+                       t.Invoker = PageInvoker.CreateOnInit (new PageDelegate (_PostBackSelectingEvents));
+                       string html = t.Run ();
+
+                       // Select
+                       FormRequest fr = new FormRequest (t.Response, "form1");
+                       fr.Controls.Add ("__EVENTTARGET");
+                       fr.Controls.Add ("__EVENTARGUMENT");
+                       fr.Controls["__EVENTTARGET"].Value = "Grid";
+                       fr.Controls["__EVENTARGUMENT"].Value = "Select$0";
+                       t.Request = fr;
+                       html = t.Run ();
+
+                       // Check if events done
+                       CustomEventAssert (t, "SelectedIndexChanging");
+                       CustomEventAssert (t, "SelectedIndexChanged");
+               }
+
+               #region PostBackEvents_helpers
+               
+               private void CustomEventAssert (WebTest t, string c)
+               {
+                       Hashtable local = t.UserData as Hashtable;
+                       if (local == null)
+                               Assert.Fail ("User data not created");
+                       if(!local.ContainsValue(c))
+                               Assert.Fail (c + " not fired!"); 
+               }
+
+               public static void _PostBackSelectingEvents (Page p)
+               {
+                       if (!p.IsPostBack)
+                               DataObjects.Reset ();
+
+                       GridView grid = new GridView ();
+                       ObjectDataSource ds = new ObjectDataSource ();
+                       grid.SelectedIndexChanged += new EventHandler (grid_SelectedIndexChanged);
+                       grid.SelectedIndexChanging += new GridViewSelectEventHandler (grid_SelectedIndexChanging);
+                       ds.ID = "ObjectDataSource2";
+                       ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataObjects";
+                       ds.SelectMethod = "Select";
+                       ds.DeleteMethod = "Delete";
+                       ds.InsertMethod = "Insert";
+                       ds.UpdateMethod = "Update";
+                       grid.ID = "Grid";
+                       grid.AutoGenerateColumns = true;
+                       grid.AutoGenerateSelectButton = true;
+                       grid.DataSourceID = "ObjectDataSource2";
+                       p.Form.Controls.Add (ds);
+                       p.Form.Controls.Add (grid);
+               }
+
+               public static void _PostBackSortingEvents (Page p)
+               {
+                       if (!p.IsPostBack)
+                               DataObjects.Reset ();
+
+                       GridView grid = new GridView ();
+                       ObjectDataSource ds = new ObjectDataSource ();
+                       ds.ID = "ObjectDataSource2";
+                       ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataObjects";
+                       ds.SelectMethod = "Select";
+                       ds.DeleteMethod = "Delete";
+                       ds.InsertMethod = "Insert";
+                       ds.UpdateMethod = "Update";
+
+                       grid.Sorted += new EventHandler (grid_Sorted);
+                       grid.Sorting += new GridViewSortEventHandler (grid_Sorting);
+                       grid.AllowSorting = true;
+                       grid.ID = "Grid";
+                       grid.AutoGenerateColumns = true;
+                       
+                       grid.DataSourceID = "ObjectDataSource2";
+                       p.Form.Controls.Add (ds);
+                       p.Form.Controls.Add (grid);
+               }
+
+               
+               public static void _PostBackPagingEvents (Page p)
+               {
+                       if (!p.IsPostBack)
+                               DataObjects.Reset ();
+
+                       GridView grid = new GridView ();
+                       ObjectDataSource ds = new ObjectDataSource ();
+                       ds.ID = "ObjectDataSource2";
+                       ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataObjects";
+                       ds.SelectMethod = "Select";
+                       ds.DeleteMethod = "Delete";
+                       ds.InsertMethod = "Insert";
+                       ds.UpdateMethod = "Update";
+
+                       grid.PageIndexChanged += new EventHandler (grid_PageIndexChanged);
+                       grid.PageIndexChanging += new GridViewPageEventHandler (grid_PageIndexChanging);
+                       grid.AllowPaging = true;
+                       grid.ID = "Grid";
+                       grid.AutoGenerateColumns = false;
+                       grid.PageSize = 1;
+
+                       BoundField field = new BoundField ();
+                       field.DataField = "ID";
+                       grid.Columns.Add (field);
+
+                       field = new BoundField ();
+                       field.DataField = "FName";
+                       grid.Columns.Add (field);
+
+                       field = new BoundField ();
+                       field.DataField = "LName";
+                       grid.Columns.Add (field);
+
+                       grid.DataSourceID = "ObjectDataSource2";
+                       p.Form.Controls.Add (ds);
+                       p.Form.Controls.Add (grid);
+               }
+
+               public static void _PostBackRowEvents (Page p)
+               {
+                       if (!p.IsPostBack)
+                               DataObject.Reset ();
+
+                       GridView grid = new GridView ();
+                       ObjectDataSource ds = new ObjectDataSource ();
+                       ds.ID = "ObjectDataSource2";
+                       ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataObject";
+                       ds.SelectMethod = "Select";
+                       ds.DeleteMethod = "Delete";
+                       ds.InsertMethod = "Insert";
+                       ds.UpdateMethod = "Update";
+
+
+                       grid.RowCancelingEdit += new GridViewCancelEditEventHandler (grid_RowCancelingEdit);
+                       grid.RowCommand += new GridViewCommandEventHandler (grid_RowCommand);
+                       grid.RowCreated += new GridViewRowEventHandler (grid_RowCreated);
+                       grid.RowDataBound += new GridViewRowEventHandler (grid_RowDataBound);
+                       grid.RowEditing += new GridViewEditEventHandler (grid__RowEditing);
+                       grid.RowUpdating += new GridViewUpdateEventHandler (grid_RowUpdating);
+                       grid.RowUpdated += new GridViewUpdatedEventHandler (grid_RowUpdated);
+                       grid.PageIndexChanged += new EventHandler (grid_PageIndexChanged);
+                       grid.PageIndexChanging += new GridViewPageEventHandler (grid_PageIndexChanging);
+
+                       Parameter p1 = new Parameter ("ID", TypeCode.String);
+                       Parameter p2 = new Parameter ("FName", TypeCode.String);
+                       Parameter p3 = new Parameter ("LName", TypeCode.String);
+
+                       ds.UpdateParameters.Add (p1);
+                       ds.UpdateParameters.Add (p2);
+                       ds.UpdateParameters.Add (p3);
+
+                       grid.ID = "Grid";
+                       grid.AutoGenerateEditButton = true;
+
+                       grid.AutoGenerateColumns = false;
+
+                       BoundField field = new BoundField ();
+                       field.DataField = "ID";
+                       grid.Columns.Add (field);
+
+                       field = new BoundField ();
+                       field.DataField = "FName";
+                       grid.Columns.Add (field);
+
+                       field = new BoundField ();
+                       field.DataField = "LName";
+                       grid.Columns.Add (field);
+
+                       grid.DataSourceID = "ObjectDataSource2";
+                       p.Form.Controls.Add (ds);
+                       p.Form.Controls.Add (grid);
+               }
+
+               static void grid_SelectedIndexChanging (object sender, GridViewSelectEventArgs e)
+               {
+                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;
+                       if (local != null) {
+                               local.Add (local.Count, "SelectedIndexChanging");
+                       }
+               }
+
+               static void grid_SelectedIndexChanged (object sender, EventArgs e)
+               {
+                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;
+                       if (local != null) {
+                               local.Add (local.Count, "SelectedIndexChanged");
+                       }
+               }
+
+               static void grid_PageIndexChanging (object sender, GridViewPageEventArgs e)
+               {
+                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;
+                       if (local != null) {
+                               local.Add (local.Count, "PageIndexChanging");
+                       }
+               }
+
+               static void grid_PageIndexChanged (object sender, EventArgs e)
+               {
+                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;
+                       if (local != null) {
+                               local.Add (local.Count, "PageIndexChanged");
+                       }
+               }
+
+               public static void grid_RowUpdated (object sender, GridViewUpdatedEventArgs e)
+               {
+                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;
+                       if (local != null) {
+                               local.Add (local.Count, "RowUpdated");
+                       }
+               }
+
+               public static void grid_RowUpdating (object sender, GridViewUpdateEventArgs e)
+               {
+                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;
+                       if (local != null) {
+                               local.Add (local.Count, "RowUpdating");
+                       }
+               }
+
+               public static void grid_RowEditing (object sender, GridViewEditEventArgs e)
+               {
+                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;
+                       if (local != null) {
+                               local.Add (local.Count, "RowEditing");
+                       }
+               }
+
+               public static void grid_RowDataBound (object sender, GridViewRowEventArgs e)
+               {
+                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;
+                       if (local != null) {
+                               local.Add (local.Count, "RowDataBound");
+                       }
+               }
+
+               public static void grid_RowCreated (object sender, GridViewRowEventArgs e)
+               {
+                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;
+                       if (local != null) {
+                               local.Add (local.Count, "RowCreated");
+                       }
+               }
+
+               public static void grid_RowCommand (object sender, GridViewCommandEventArgs e)
+               {
+                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;
+                       if (local != null) {
+                               local.Add (local.Count, "RowCommand");
+                       }
+               }
+
+               public static void grid_RowCancelingEdit (object sender, GridViewCancelEditEventArgs e)
+               {
+                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;
+                       if (local != null) {
+                               local.Add (local.Count, "RowCancelingEdit");
+                       }
+               }
+
+               public static void grid__RowEditing (object sender, GridViewEditEventArgs e)
+               {
+                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;
+                       if (local != null) {
+                               local.Add (local.Count, "RowEditing");
+                       }
+               }
+
+               static void grid_Sorting (object sender, GridViewSortEventArgs e)
+               {
+                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;
+                       if (local != null) {
+                               local.Add (local.Count, "Sorting");
+                       }
+               }
+
+               static void grid_Sorted (object sender, EventArgs e)
+               {
+                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;
+                       if (local != null) {
+                               local.Add (local.Count, "Sorted");
+                       }
+               }
+
+               #endregion
+
                /// <summary>
                /// All possible exceptions what can be thrown 
                /// </summary>
@@ -3054,6 +3058,34 @@ namespace MonoTests.System.Web.UI.WebControls
                        HtmlDiff.AssertAreEqual (original, pageHTML, "GridViewUpdate #3");
                }
 
+               [Test]
+               [Category ("NunitWeb")]
+               public void GridView_RequiresDataBinding () {
+                       PageDelegates delegates = new PageDelegates ();
+                       delegates.LoadComplete = GridView_RequiresDataBinding_LoadComplete;
+                       PageInvoker invoker = new PageInvoker (delegates);
+                       WebTest t = new WebTest (invoker);
+                       t.Run ();
+               }
+
+               public static void GridView_RequiresDataBinding_LoadComplete (Page p) {
+                       PokerGridView grid = new PokerGridView ();
+                       p.Form.Controls.Add (grid);
+
+                       grid.DataSource = new string [] { "A", "B", "C" };
+                       grid.DataBind ();
+
+                       Assert.AreEqual (false, grid.GetRequiresDataBinding ());
+
+                       grid.EmptyDataTemplate = new CompiledTemplateBuilder (BuildTemplateMethod);
+                       Assert.AreEqual (false, grid.GetRequiresDataBinding (), "EmptyDataTemplate was set");
+
+                       grid.PagerTemplate = new CompiledTemplateBuilder (BuildTemplateMethod);
+                       Assert.AreEqual (false, grid.GetRequiresDataBinding (), "PagerTemplate was set");
+               }
+
+               public static void BuildTemplateMethod (Control c) { }
+
         [TestFixtureTearDown]
         public void TearDown()
         {
@@ -3210,102 +3242,102 @@ namespace MonoTests.System.Web.UI.WebControls
                        return aTable;
                }
        }
-\r
-       public class DataObjects\r
-       {\r
-               public static DataTable ds = CreateDataTable ();\r
-               public static DataTable Select ()\r
-               {\r
-                       return ds;\r
-               }\r
-\r
-               public static void Reset ()\r
-               {\r
-                       ds = CreateDataTable ();\r
-               }\r
-\r
-               public static DataTable Delete (string ID, string FName, string LName)\r
-               {\r
-                       DataRow dr = ds.Rows.Find (ID);\r
-                       if (dr != null) {\r
-                               ds.Rows.Remove (dr);\r
-                       }\r
-                       return ds;\r
-               }\r
-\r
-               public static DataTable Insert (string ID, string FName, string LName)\r
-               {\r
-                       DataRow dr = ds.NewRow ();\r
-                       dr["ID"] = ID;\r
-                       dr["FName"] = FName;\r
-                       dr["LName"] = LName;\r
-                       ds.Rows.Add (dr);\r
-                       return ds;\r
-               }\r
-\r
-               public static DataTable Update (string ID, string FName, string LName)\r
-               {\r
-                       foreach (DataRow row in ds.Rows) {\r
-                               if (row["ID"].ToString () == ID) {\r
-                                       row["FName"] = FName;\r
-                                       row["LName"] = LName;\r
-                               }\r
-                       }\r
-                       return ds;\r
-               }\r
-\r
-               public static DataTable CreateDataTable ()\r
-               {\r
-                       DataTable aTable = new DataTable ("A");\r
-                       DataColumn dtCol;\r
-                       DataRow dtRow;\r
-\r
-                       // Create ID column and add to the DataTable.\r
-                       dtCol = new DataColumn ();\r
-                       dtCol.DataType = Type.GetType ("System.Int32");\r
-                       dtCol.ColumnName = "ID";\r
-                       dtCol.AutoIncrement = true;\r
-                       dtCol.Caption = "ID";\r
-                       dtCol.ReadOnly = true;\r
-                       dtCol.Unique = true;\r
-                       aTable.Columns.Add (dtCol);\r
-\r
-                       // Create Name column and add to the table\r
-                       dtCol = new DataColumn ();\r
-                       dtCol.DataType = Type.GetType ("System.String");\r
-                       dtCol.ColumnName = "FName";\r
-                       dtCol.AutoIncrement = false;\r
-                       dtCol.Caption = "First Name";\r
-                       dtCol.ReadOnly = false;\r
-                       dtCol.Unique = false;\r
-                       aTable.Columns.Add (dtCol);\r
-\r
-                       // Create Last Name column and add to the table.\r
-                       dtCol = new DataColumn ();\r
-                       dtCol.DataType = Type.GetType ("System.String");\r
-                       dtCol.ColumnName = "LName";\r
-                       dtCol.AutoIncrement = false;\r
-                       dtCol.Caption = "Last Name";\r
-                       dtCol.ReadOnly = false;\r
-                       dtCol.Unique = false;\r
-                       aTable.Columns.Add (dtCol);\r
-\r
-                       // Create three rows to the table\r
-                       dtRow = aTable.NewRow ();\r
-                       dtRow["ID"] = 1001;\r
-                       dtRow["FName"] = "Mahesh";\r
-                       dtRow["LName"] = "Chand";\r
-                       aTable.Rows.Add (dtRow);\r
-\r
-                       dtRow = aTable.NewRow ();\r
-                       dtRow["ID"] = 1002;\r
-                       dtRow["FName"] = "Vadim";\r
-                       dtRow["LName"] = "Popik";\r
-                       aTable.Rows.Add (dtRow);\r
-\r
-                       aTable.PrimaryKey = new DataColumn[] { aTable.Columns["ID"] };\r
-                       return aTable;\r
-               }\r
+
+       public class DataObjects
+       {
+               public static DataTable ds = CreateDataTable ();
+               public static DataTable Select ()
+               {
+                       return ds;
+               }
+
+               public static void Reset ()
+               {
+                       ds = CreateDataTable ();
+               }
+
+               public static DataTable Delete (string ID, string FName, string LName)
+               {
+                       DataRow dr = ds.Rows.Find (ID);
+                       if (dr != null) {
+                               ds.Rows.Remove (dr);
+                       }
+                       return ds;
+               }
+
+               public static DataTable Insert (string ID, string FName, string LName)
+               {
+                       DataRow dr = ds.NewRow ();
+                       dr["ID"] = ID;
+                       dr["FName"] = FName;
+                       dr["LName"] = LName;
+                       ds.Rows.Add (dr);
+                       return ds;
+               }
+
+               public static DataTable Update (string ID, string FName, string LName)
+               {
+                       foreach (DataRow row in ds.Rows) {
+                               if (row["ID"].ToString () == ID) {
+                                       row["FName"] = FName;
+                                       row["LName"] = LName;
+                               }
+                       }
+                       return ds;
+               }
+
+               public static DataTable CreateDataTable ()
+               {
+                       DataTable aTable = new DataTable ("A");
+                       DataColumn dtCol;
+                       DataRow dtRow;
+
+                       // Create ID column and add to the DataTable.
+                       dtCol = new DataColumn ();
+                       dtCol.DataType = Type.GetType ("System.Int32");
+                       dtCol.ColumnName = "ID";
+                       dtCol.AutoIncrement = true;
+                       dtCol.Caption = "ID";
+                       dtCol.ReadOnly = true;
+                       dtCol.Unique = true;
+                       aTable.Columns.Add (dtCol);
+
+                       // Create Name column and add to the table
+                       dtCol = new DataColumn ();
+                       dtCol.DataType = Type.GetType ("System.String");
+                       dtCol.ColumnName = "FName";
+                       dtCol.AutoIncrement = false;
+                       dtCol.Caption = "First Name";
+                       dtCol.ReadOnly = false;
+                       dtCol.Unique = false;
+                       aTable.Columns.Add (dtCol);
+
+                       // Create Last Name column and add to the table.
+                       dtCol = new DataColumn ();
+                       dtCol.DataType = Type.GetType ("System.String");
+                       dtCol.ColumnName = "LName";
+                       dtCol.AutoIncrement = false;
+                       dtCol.Caption = "Last Name";
+                       dtCol.ReadOnly = false;
+                       dtCol.Unique = false;
+                       aTable.Columns.Add (dtCol);
+
+                       // Create three rows to the table
+                       dtRow = aTable.NewRow ();
+                       dtRow["ID"] = 1001;
+                       dtRow["FName"] = "Mahesh";
+                       dtRow["LName"] = "Chand";
+                       aTable.Rows.Add (dtRow);
+
+                       dtRow = aTable.NewRow ();
+                       dtRow["ID"] = 1002;
+                       dtRow["FName"] = "Vadim";
+                       dtRow["LName"] = "Popik";
+                       aTable.Rows.Add (dtRow);
+
+                       aTable.PrimaryKey = new DataColumn[] { aTable.Columns["ID"] };
+                       return aTable;
+               }
        }
 }
 
@@ -3316,3 +3348,4 @@ namespace MonoTests.System.Web.UI.WebControls
 
 
 
+