2 // Tests for System.Web.UI.WebControls.GridView.cs
5 // Tal Klahr (talk@mainsoft.com)
6 // Yoni Klain (yonik@mainsoft.com)
8 // (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)
10 // Permission is hereby granted, free of charge, to any person obtaining
11 // a copy of this software and associated documentation files (the
12 // "Software"), to deal in the Software without restriction, including
13 // without limitation the rights to use, copy, modify, merge, publish,
14 // distribute, sublicense, and/or sell copies of the Software, and to
15 // permit persons to whom the Software is furnished to do so, subject to
16 // the following conditions:
18 // The above copyright notice and this permission notice shall be
19 // included in all copies or substantial portions of the Software.
21 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
26 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
27 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 // ondatasourceviewchanged(),onpagepreload(),RaiseCallbackEvent(),RaisePostbackEvent
34 using NUnit.Framework;
37 using System.Globalization;
40 using System.Web.UI.WebControls;
41 using System.Collections;
42 using MonoTests.SystemWeb.Framework;
43 using MonoTests.stand_alone.WebHarness;
44 using MyWebControl = System.Web.UI.WebControls;
47 using System.Threading;
48 using System.Collections.Generic;
50 namespace MonoTests.System.Web.UI.WebControls
52 class PokerGridView : GridView
54 public bool ifPagerInitilized;
55 public bool dataPropertyChanged;
56 public bool pagePreLoad;
57 public bool controlHierarchy;
59 public PokerGridView ()
64 public object SaveState ()
66 return SaveViewState ();
69 public void LoadState (object o)
74 public StateBag StateBag
76 get { return base.ViewState; }
79 public HtmlTextWriterTag PTagKey
81 get { return base.TagKey;}
84 public string Render ()
86 StringWriter sw = new StringWriter ();
87 HtmlTextWriter tw = new HtmlTextWriter (sw);
89 return sw.ToString ();
92 public AutoGeneratedField DoCreateAutoGeneratedColumn (AutoGeneratedFieldProperties fieldProperties)
94 return base.CreateAutoGeneratedColumn (fieldProperties);
97 public int DoCreateChildControls (IEnumerable dataSource, bool dataBinding)
99 return base.CreateChildControls (dataSource, dataBinding);
102 public Table DoCreateChildTable ()
104 return base.CreateChildTable ();
107 public ICollection DoCreateColumns (PagedDataSource dataSource, bool useDataSource)
109 return base.CreateColumns (dataSource, useDataSource);
112 public Style DoCreateControlStyle ()
114 return base.CreateControlStyle ();
117 public DataSourceSelectArguments DoCreateDataSourceSelectArguments ()
119 return CreateDataSourceSelectArguments();
122 public DataSourceView DoGetData ()
127 public GridViewRow doCreateRow (int rowIndex, int dataSourceIndex, DataControlRowType rowType, DataControlRowState rowState)
129 return base.CreateRow (rowIndex, dataSourceIndex, rowType, rowState);
132 public string doGetCallbackResult ()
134 return base.GetCallbackResult ();
137 public string doGetCallbackScript (IButtonControl buttonControl, string argument)
139 return base.GetCallbackScript (buttonControl, argument);
142 protected override void InitializePager (GridViewRow row, int columnSpan, PagedDataSource pagedDataSource)
144 base.InitializePager (row, columnSpan, pagedDataSource);
145 ifPagerInitilized = true;
148 protected override void InitializeRow (GridViewRow row, DataControlField[] fields)
150 base.InitializeRow (row, fields);
153 public bool DoOnBubbleEvent (object source, EventArgs e)
155 return base.OnBubbleEvent (source, e);
158 public void DoOnDataBinding (EventArgs e)
160 base.OnDataBinding (e);
163 public void DoOnDataBound (EventArgs e)
165 base.OnDataBound (e);
168 protected override void OnDataPropertyChanged ()
170 base.OnDataPropertyChanged ();
171 dataPropertyChanged = true;
174 public void DoOnDataSourceViewChanged (object sender, EventArgs e)
176 base.OnDataSourceViewChanged (sender, e);
179 public void DoOnInit (EventArgs e)
184 public void DoOnLoad (EventArgs e)
189 public void DoOnPageIndexChanged (EventArgs e)
191 base.OnPageIndexChanged (e);
194 public void DoOnPageIndexChanging (GridViewPageEventArgs e)
196 base.OnPageIndexChanging (e);
199 protected override void OnPagePreLoad (object sender, EventArgs e)
201 base.OnPagePreLoad (sender, e);
205 public void DoOnPreRender (EventArgs e)
207 base.OnPreRender (e);
210 public void DoOnRowCancelingEdit (GridViewCancelEditEventArgs e)
212 base.OnRowCancelingEdit (e);
215 public void DoOnRowCommand (GridViewCommandEventArgs e)
217 base.OnRowCommand (e);
220 public void DoOnRowCreated (GridViewRowEventArgs e)
222 base.OnRowCreated (e);
225 public void DoOnRowDataBound (GridViewRowEventArgs e)
227 base.OnRowDataBound (e);
230 public void DoOnRowDeleted (GridViewDeletedEventArgs e)
232 base.OnRowDeleted (e);
235 public void DoOnRowDeleting (GridViewDeleteEventArgs e)
237 base.OnRowDeleting (e);
240 public void DoOnRowEditing (GridViewEditEventArgs e)
242 base.OnRowEditing (e);
245 public void DoOnRowUpdated (GridViewUpdatedEventArgs e)
247 base.OnRowUpdated (e);
250 public void DoOnRowUpdating (GridViewUpdateEventArgs e)
252 base.OnRowUpdating (e);
255 public void DoOnSelectedIndexChanged (EventArgs e)
257 base.OnSelectedIndexChanged (e);
260 public void DoOnSelectedIndexChanging (GridViewSelectEventArgs e)
262 base.OnSelectedIndexChanging (e);
265 public void DoOnSorted (EventArgs e)
270 public void DoOnSorting (GridViewSortEventArgs e)
275 public void DoOnUnload (EventArgs e)
280 public void DoPerformDataBinding (IEnumerable data)
282 base.PerformDataBinding (data);
285 protected internal override void PrepareControlHierarchy ()
287 base.PrepareControlHierarchy ();
288 controlHierarchy = true;
291 public object DoSaveControlState ()
293 return base.SaveControlState ();
296 public void DoLoadControlState (object savedState)
298 base.LoadControlState (savedState);
301 public void SetRequiresDataBinding (bool value)
303 RequiresDataBinding = value;
306 public bool GetRequiresDataBinding ()
308 return RequiresDataBinding;
314 public class GridViewTest
316 class DS : ObjectDataSource, IDataSource
318 public static List<string> GetList ()
320 List<string> list = new List<string> ();
330 public void DoRaiseDataSourceChangedEvent (EventArgs e)
332 RaiseDataSourceChangedEvent (e);
336 public class DataSourceObject
338 public static List<string> GetList (string sortExpression, int startRowIndex, int maximumRows)
343 public static List<string> GetList (int startRowIndex, int maximumRows)
348 public static List<string> GetList (string sortExpression)
353 public static List<string> GetList ()
355 List<string> list = new List<string> ();
365 public static int GetCount ()
367 return GetList ().Count;
373 private static ArrayList _data = new ArrayList ();
377 _data.Add (new DataItem (1, "heh1"));
378 _data.Add (new DataItem (2, "heh2"));
385 public ArrayList GetAllItems ()
390 public void UpdateItem (int id, string name)
392 foreach (DataItem i in _data) {
401 public class DataItem
406 public DataItem (int id, string name)
417 get { return _name; }
418 set { _name = value; }
422 public const string BOOLFIELD = "bool";
423 public const string STRINGFIELD = "str";
424 ArrayList myds = new ArrayList ();
425 public bool InitilizePager;
428 public void GridViewInit ()
438 WebTest.CopyResource (GetType (), "GridViewUpdate.aspx", "GridViewUpdate.aspx");
439 WebTest.CopyResource (GetType (), "NoEventValidation.aspx", "NoEventValidation.aspx");
440 WebTest.CopyResource (GetType (), "TableSections_Bug551666.aspx", "TableSections_Bug551666.aspx");
441 WebTest.CopyResource (GetType (), "TableSections_Bug551666.aspx.cs", "TableSections_Bug551666.aspx.cs");
442 WebTest.CopyResource (GetType (), "GridView_Bug595567.aspx", "GridView_Bug595567.aspx");
445 [Test (Description="Bug 595567")]
446 public void HeaderFooterVisibility_Bug595567 ()
448 WebTest t = new WebTest ("GridView_Bug595567.aspx");
449 string originalHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"gridView\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\">Item</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td>0</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>0</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>0</td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
450 string pageHtml = t.Run ();
451 string renderedHtml = HtmlDiff.GetControlFromPageHtml (pageHtml);
453 HtmlDiff.AssertAreEqual (originalHtml, renderedHtml, "#A1");
457 public void GridView_DefaultProperties ()
459 PokerGridView g = new PokerGridView ();
460 Assert.AreEqual (0, g.StateBag.Count, "ViewState.Count");
461 Assert.AreEqual (false, g.AllowPaging, "AllowPaging");
462 Assert.AreEqual (false, g.AllowSorting, "AllowSorting");
463 // The AlternatingRowStyle property is tested by the TableItemStyle test (already exists)
464 Assert.AreEqual (true, g.AutoGenerateColumns, "AutoGenerateColumns");
465 Assert.AreEqual (false, g.AutoGenerateDeleteButton, "AutoGenerateDeleteButton");
466 Assert.AreEqual (false, g.AutoGenerateEditButton, "AutoGenerateEditButton");
467 Assert.AreEqual (false, g.AutoGenerateSelectButton, "AutoGenerateSelectButton");
468 Assert.AreEqual ("", g.BackImageUrl, "BackImageUrl");
469 Assert.AreEqual (null, g.BottomPagerRow, "BottomPagerRow");
470 Assert.AreEqual ("", g.Caption, "Caption");
471 Assert.AreEqual (TableCaptionAlign.NotSet, g.CaptionAlign, "CaptionAlign");
472 Assert.AreEqual (-1, g.CellPadding, "CellPadding");
473 Assert.AreEqual (0, g.CellSpacing, "CellSpacing");
474 // ToDo: The Columns property default value is tested by the DataControlFieldCollection and DataControlField tests
475 Assert.AreEqual (0, g.DataKeyNames.Length, "DataKeyNames");
476 // ToDo: The DataKeys property default value is tested by the DataKeyArray and DataKey tests
477 Assert.AreEqual (-1, g.EditIndex, "EditIndex");
478 // The EditRowStyle property is tested by the TableItemStyle test (already exists)
479 // The EmptyDataRowStyle property is tested by the TableItemStyle test (already exists)
480 Assert.AreEqual (null, g.EmptyDataTemplate, "EmptyDataTemplate");
481 Assert.AreEqual ("", g.EmptyDataText, "EmptyDataText");
482 Assert.AreEqual (false, g.EnableSortingAndPagingCallbacks, "EnableSortingAndPagingCallbacks");
484 // The FooterStyle property is tested by the TableItemStyle test (already exists)
485 Assert.AreEqual (GridLines.Both, g.GridLines, "GridLines");
486 // The HeaderStyle property is tested by the TableItemStyle test (already exists)
487 Assert.AreEqual (HorizontalAlign.NotSet, g.HorizontalAlign, "HorizontalAlign");
489 Assert.AreEqual (0, g.PageIndex, "PageIndex");
490 // ToDo: The PagerSettings property is tested by the PagerSettings test
491 // The PagerStyle property is tested by the TableItemStyle test (already exists)
492 Assert.AreEqual (null, g.PagerTemplate, "PagerTemplate");
493 Assert.AreEqual (10, g.PageSize, "PageSize");
494 Assert.AreEqual ("", g.RowHeaderColumn, "RowHeaderColumn");
495 // ToDo: The Rows property is tested by the GridViewRowCollection and GridViewRow test
496 // The RowStyle property is tested by the TableItemStyle test (already exists)
497 Assert.AreEqual (false, g.ShowFooter, "ShowFooter");
498 Assert.AreEqual (true, g.ShowHeader, "ShowHeader");
499 Assert.AreEqual (SortDirection.Ascending, g.SortDirection, "SortDirection");
500 Assert.AreEqual (null, g.TopPagerRow, "TopPagerRow");
501 Assert.AreEqual (true, g.UseAccessibleHeader, "UseAccessibleHeader");
505 public void GridView_DefaultPropertiesNotWorking ()
507 PokerGridView g = new PokerGridView ();
508 Assert.AreEqual (null, g.FooterRow, "FooterRow");
509 Assert.AreEqual (null, g.HeaderRow, "HeaderRow");
510 Assert.AreEqual (true, g.Visible, "ViewVisible");
511 Assert.AreEqual (0, g.PageCount, "PageCount");
512 Assert.AreEqual ("", g.SortExpression, "SortExpression");
516 public void GridView_AssignedProperties ()
518 PokerGridView g = new PokerGridView ();
519 Assert.AreEqual (0, g.StateBag.Count, "ViewState.Count");
520 g.AllowPaging = true;
521 Assert.AreEqual (true, g.AllowPaging, "AllowPaging");
522 g.AllowSorting = true;
523 Assert.AreEqual (true, g.AllowSorting, "AllowSorting");
524 g.AutoGenerateColumns = false;
525 Assert.AreEqual (false, g.AutoGenerateColumns, "AutoGenerateColumns");
526 g.AutoGenerateDeleteButton = true;
527 Assert.AreEqual (true, g.AutoGenerateDeleteButton, "AutoGenerateDeleteButton");
528 g.AutoGenerateEditButton = true;
529 Assert.AreEqual (true, g.AutoGenerateEditButton, "AutoGenerateEditButton");
530 g.AutoGenerateSelectButton = true;
531 Assert.AreEqual (true, g.AutoGenerateSelectButton, "AutoGenerateSelectButton");
532 g.BackImageUrl = "test";
533 Assert.AreEqual ("test", g.BackImageUrl, "BackImageUrl");
535 Assert.AreEqual ("test", g.Caption, "Caption");
536 g.CaptionAlign = TableCaptionAlign.Left;
537 Assert.AreEqual (TableCaptionAlign.Left, g.CaptionAlign, "CaptionAlign");
539 Assert.AreEqual (0, g.CellPadding, "CellPadding");
541 Assert.AreEqual (1, g.CellSpacing, "CellSpacing");
542 // ToDo: The Columns property default value is tested by the DataControlFieldCollection and DataControlField tests
543 string[] str = new String[1];
545 g.DataKeyNames = str;
546 Assert.AreEqual ("test", g.DataKeyNames[0], "DataKeyNames");
548 // ToDo: The DataKeys property default value is tested by the DataKeyArray and DataKey tests
550 Assert.AreEqual (0, g.EditIndex, "EditIndex");
551 // The EditRowStyle property default value is tested by the TableItemStyle test (already exists)
552 // The EmptyDataRowStyle property default value is tested by the TableItemStyle test (already exists)
554 MyWebControl.Image myImage = new MyWebControl.Image ();
555 myImage.ImageUrl = "myimage.jpg";
556 ImageTemplate template = new ImageTemplate ();
557 template.MyImage = myImage;
558 // end create template image
560 g.EmptyDataTemplate = template;
561 Assert.IsNotNull (g.EmptyDataTemplate, "EmptyDataTemplate");
562 g.EmptyDataText = "test";
563 Assert.AreEqual ("test", g.EmptyDataText, "EmptyDataText");
565 g.EnableSortingAndPagingCallbacks = true;
566 Assert.AreEqual (true, g.EnableSortingAndPagingCallbacks, "EnableSortingAndPagingCallbacks");
568 // The FooterStyle property default value is tested by the TableItemStyle test (already exists)
569 g.GridLines = GridLines.Horizontal;
570 Assert.AreEqual (GridLines.Horizontal, g.GridLines, "GridLines");
572 g.HorizontalAlign = HorizontalAlign.Justify;
573 Assert.AreEqual (HorizontalAlign.Justify, g.HorizontalAlign, "HorizontalAlign");
576 Assert.AreEqual (1, g.PageIndex, "PageIndex");
577 // ToDo: The PagerSettings property default value is tested by the PagerSettings test
578 // The PagerStyle property default value is tested by the TableItemStyle test (already exists)
579 g.PagerTemplate = template;
580 Assert.IsNotNull (g.PagerTemplate, "PagerTemplate");
582 Assert.AreEqual (5, g.PageSize, "PageSize");
583 g.RowHeaderColumn = "test";
584 Assert.AreEqual ("test", g.RowHeaderColumn, "RowHeaderColumn");
585 // ToDo: The Rows property default value is tested by the GridViewRowCollection and GridViewRow test
586 // The RowStyle property default value is tested by the TableItemStyle test (already exists)
588 Assert.AreEqual (true, g.ShowFooter, "ShowFooter");
589 g.ShowHeader = false;
590 Assert.AreEqual (false, g.ShowHeader, "ShowHeader");
591 g.UseAccessibleHeader = false;
592 Assert.AreEqual (false, g.UseAccessibleHeader, "UseAccessibleHeader");
596 public void SortedAscendingCellStyle ()
598 var g = new PokerGridView ();
600 Assert.IsNotNull (g.SortedAscendingCellStyle, "#A1-1");
604 public void SortedAscendingHeaderStyle ()
606 var g = new PokerGridView ();
608 Assert.IsNotNull (g.SortedAscendingHeaderStyle, "#A1-1");
612 public void SortedDescendingCellStyle ()
614 var g = new PokerGridView ();
616 Assert.IsNotNull (g.SortedDescendingCellStyle, "#A1-1");
620 public void SortedDescendingHeaderStyle ()
622 var g = new PokerGridView ();
624 Assert.IsNotNull (g.SortedDescendingHeaderStyle, "#A1-1");
628 public void GridView_DefaultProtectedProperties ()
630 PokerGridView g = new PokerGridView ();
631 Assert.AreEqual (HtmlTextWriterTag.Table, g.PTagKey, "TagKey");
635 public void GridView_Sort_and_DataSourceSelectArguments ()
638 DataSourceSelectArguments arg;
639 Page p = new Page ();
641 PokerGridView g = new PokerGridView ();
642 g.Columns.Add (new BoundField ());
643 g.AllowSorting = true;
646 ObjectDataSource data = new ObjectDataSource ();
647 data.TypeName = typeof (DataSourceObject).AssemblyQualifiedName;
648 data.SelectMethod = "GetList";
649 data.SortParameterName = "sortExpression";
651 p.Controls.Add (data);
653 g.DataSourceID = "Data";
658 g.Sort ("sort", SortDirection.Descending);
660 Assert.AreEqual (-1, g.EditIndex, "EditIndex after Sort, Bound by DataSourceID");
661 Assert.AreEqual (0, g.PageIndex, "PageIndex after Sort, Bound by DataSourceID");
663 arg = g.DoCreateDataSourceSelectArguments();
664 view = g.DoGetData ();
665 Assert.IsTrue (view.CanSort);
666 Assert.AreEqual ("sort", g.SortExpression, "SortExpression, Bound by DataSourceID");
667 Assert.AreEqual (SortDirection.Descending, g.SortDirection, "SortDirection, Bound by DataSourceID");
668 Assert.AreEqual ("sort DESC", arg.SortExpression, "AllowSorting = true, Bound by DataSourceID");
670 g.AllowSorting = false;
671 arg = g.DoCreateDataSourceSelectArguments ();
672 Assert.AreEqual ("sort DESC", arg.SortExpression, "AllowSorting = false, Bound by DataSourceID");
676 public void GridView_PageCount ()
678 Page p = new Page ();
680 PokerGridView gv = new PokerGridView ();
682 gv.AllowPaging = true;
685 ObjectDataSource data = new ObjectDataSource ();
686 data.ID = "ObjectDataSource1";
687 data.TypeName = typeof (DataSourceObject).AssemblyQualifiedName;
688 data.SelectMethod = "GetList";
689 p.Controls.Add (data);
691 gv.DataSourceID = "ObjectDataSource1";
692 gv.SetRequiresDataBinding (true);
694 Assert.AreEqual (0, gv.PageCount, "PageCount before binding");
698 Assert.AreEqual (2, gv.PageCount, "PageCount after binding");
700 PokerGridView copy = new PokerGridView ();
701 copy.DoLoadControlState (gv.DoSaveControlState ());
703 Assert.AreEqual (2, copy.PageCount, "PageCount from ViewState");
707 public void GridView_DataKeys ()
709 Page p = new Page ();
711 PokerGridView gv = new PokerGridView ();
714 ObjectDataSource data = new ObjectDataSource ();
715 data.TypeName = typeof (DataObject).AssemblyQualifiedName;
716 data.SelectMethod = "Select";
717 p.Controls.Add (data);
719 gv.DataSource = data;
720 gv.DataKeyNames = new string [] { "ID", "FName" };
722 DataKeyArray keys1 = gv.DataKeys;
724 Assert.AreEqual (0, keys1.Count, "DataKeys count before binding");
728 DataKeyArray keys2 = gv.DataKeys;
729 DataKeyArray keys3 = gv.DataKeys;
731 Assert.IsFalse (Object.ReferenceEquals (keys1, keys2), "DataKey returns the same instans");
732 Assert.IsTrue (Object.ReferenceEquals (keys2, keys3), "DataKey returns the same instans");
734 Assert.AreEqual (1, keys1.Count, "DataKeys count after binding");
735 Assert.AreEqual (1001, keys1 [0].Value, "DataKey.Value after binding");
736 Assert.AreEqual (2, keys1 [0].Values.Count, "DataKey.Values count after binding");
737 Assert.AreEqual (1001, keys1 [0].Values [0], "DataKey.Values[0] after binding");
738 Assert.AreEqual ("Mahesh", keys1 [0].Values [1], "DataKey.Values[1] after binding");
740 PokerGridView copy = new PokerGridView ();
741 object state = gv.DoSaveControlState ();
742 copy.DoLoadControlState (state);
744 DataKeyArray keys4 = copy.DataKeys;
746 Assert.AreEqual (1, keys4.Count, "DataKeys count from ControlState");
747 Assert.AreEqual (1001, keys4 [0].Value, "DataKey.Value from ControlState");
748 Assert.AreEqual (2, keys4 [0].Values.Count, "DataKey.Values count from ControlState");
749 Assert.AreEqual (1001, keys4 [0].Values [0], "DataKey.Values[0] from ControlState");
750 Assert.AreEqual ("Mahesh", keys4 [0].Values [1], "DataKey.Values[1] from ControlState");
753 // MSDN: The CreateDataSourceSelectArguments method is a helper method called by
754 // the GridView control to create the DataSourceSelectArguments object that
755 // contains the arguments passed to the data source. In this implementation,
756 // the DataSourceSelectArguments object contains the arguments for paging operations.
758 public void GridView_CreateDataSourceSelectArguments ()
761 Page p = new Page ();
763 PokerGridView g = new PokerGridView ();
764 g.Sorting += new GridViewSortEventHandler (g_Sorting);
767 ObjectDataSource data = new ObjectDataSource ();
768 data.TypeName = typeof (DataSourceObject).AssemblyQualifiedName;
769 data.SelectMethod = "GetList";
770 data.SortParameterName = "sortExpression";
771 DataSourceSelectArguments arg;
772 p.Controls.Add (data);
777 arg = g.DoCreateDataSourceSelectArguments ();
778 Assert.IsTrue (arg.Equals (DataSourceSelectArguments.Empty), "Default");
780 g.AllowPaging = true;
783 arg = g.DoCreateDataSourceSelectArguments ();
784 view = g.DoGetData ();
785 Assert.IsFalse (view.CanPage);
786 Assert.IsTrue (view.CanRetrieveTotalRowCount);
787 Assert.IsTrue (arg.Equals (DataSourceSelectArguments.Empty), "AllowPaging = true, CanPage = false, CanRetrieveTotalRowCount = true");
789 // make DataSourceView.CanPage = true
790 data.EnablePaging = true;
792 arg = g.DoCreateDataSourceSelectArguments ();
793 view = g.DoGetData ();
794 Assert.IsTrue (view.CanPage);
795 Assert.IsFalse (view.CanRetrieveTotalRowCount);
796 Assert.IsTrue (arg.Equals (new DataSourceSelectArguments (6, -1)), "AllowPaging = true, CanPage = true, CanRetrieveTotalRowCount = false");
798 g.AllowPaging = false;
799 arg = g.DoCreateDataSourceSelectArguments ();
800 Assert.IsTrue (arg.Equals (DataSourceSelectArguments.Empty), "AllowPaging = false, CanPage = true, CanRetrieveTotalRowCount = false");
802 // make DataSourceView.CanRetrieveTotalRowCount = true
803 data.SelectCountMethod = "GetCount";
805 arg = g.DoCreateDataSourceSelectArguments ();
806 Assert.IsTrue (arg.Equals (DataSourceSelectArguments.Empty), "AllowPaging = false, CanPage = true, CanRetrieveTotalRowCount = true");
808 g.AllowPaging = true;
809 arg = g.DoCreateDataSourceSelectArguments ();
810 DataSourceSelectArguments arg1 = new DataSourceSelectArguments (6, 3);
811 arg1.RetrieveTotalRowCount = true;
812 view = g.DoGetData ();
813 Assert.IsTrue (view.CanPage);
814 Assert.IsTrue (view.CanRetrieveTotalRowCount);
815 Assert.IsTrue (arg.Equals (arg1), "AllowPaging = true, CanPage = true, CanRetrieveTotalRowCount = true");
817 g.AllowPaging = false;
818 g.AllowSorting = true;
821 g.Sort ("sort", SortDirection.Descending);
823 Assert.AreEqual (2, g.EditIndex, "EditIndex after Sort, Bound by DataSource");
824 Assert.AreEqual (1, g.PageIndex, "PageIndex after Sort, Bound by DataSource");
826 arg = g.DoCreateDataSourceSelectArguments ();
827 view = g.DoGetData ();
828 Assert.IsTrue (view.CanSort);
829 Assert.AreEqual (String.Empty, g.SortExpression, "SortExpression, Bound by DataSource");
830 Assert.AreEqual (SortDirection.Ascending, g.SortDirection, "SortDirection, Bound by DataSource");
831 Assert.IsTrue (arg.Equals (DataSourceSelectArguments.Empty), "AllowSorting = true, Bound by DataSource");
834 static void g_Sorting (object sender, GridViewSortEventArgs e)
836 Assert.AreEqual ("sort", e.SortExpression, "GridViewSortEventArgs.SortExpression");
837 Assert.AreEqual (SortDirection.Descending, e.SortDirection, "GridViewSortEventArgs.SortDirection");
841 public void GridView_DataBind()
843 PokerGridView g = new PokerGridView ();
846 Assert.AreEqual (6, g.Rows.Count, "DataBind");
850 Assert.AreEqual (0, g.Rows.Count, "DataBind");
854 public void GridView_DataBind_NoDataSource ()
856 PokerGridView g = new PokerGridView ();
858 Assert.AreEqual (0, g.Rows.Count, "GridView_DataBind_NoDataSource");
861 bool rowcreatedchecker;
862 bool deleteitemchecker;
866 public void GridView_DeleteItem ()
868 PokerGridView g = new PokerGridView ();
869 ArrayList myds = new ArrayList ();
877 Assert.AreEqual (false, deleteitemchecker, "DeleteItem#1");
878 g.RowDeleting += new GridViewDeleteEventHandler (RowDeletingHandler);
880 Assert.AreEqual (true, deleteitemchecker, "DeleteItem#2");
883 protected void RowDeletingHandler (object sender, GridViewDeleteEventArgs e)
885 deleteitemchecker = true;
889 public void GridView_RowCreated ()
891 GridView g = new GridView ();
892 ButtonField field = new ButtonField ();
893 field.ButtonType = ButtonType.Link;
894 field.Text = "Click";
895 field.CommandName = "CMD";
896 g.Columns.Add (field);
897 g.RowCreated += new GridViewRowEventHandler (RowCreatedHandler);
899 Assert.AreEqual (false, rowcreatedchecker, "RowCreated#1");
901 ArrayList myds = new ArrayList ();
909 Assert.AreEqual (true, rowcreatedchecker, "RowCreated#2");
912 protected void RowCreatedHandler (object sender, GridViewRowEventArgs e)
914 if (e.Row.Cells.Count > 0)
915 rowcreatedchecker = true;
917 // Example from MSDN: GridView.RowCreated Event
919 // The GridViewCommandEventArgs class does not contain a
920 // property that indicates which row's command button was
921 // clicked. To identify which row's button was clicked, use
922 // the button's CommandArgument property by setting it to the
924 if (e.Row.RowType == DataControlRowType.DataRow) {
925 // Retrieve the LinkButton control from the first column.
926 IButtonControl addButton = (IButtonControl) e.Row.Cells [0].Controls [0];
928 // Set the LinkButton's CommandArgument property with the
930 addButton.CommandArgument = e.Row.RowIndex.ToString ();
935 public void GridView_Sort ()
937 PokerGridView g = new PokerGridView ();
938 Assert.AreEqual (false, sortingaction, "BeforeSorting");
939 g.Sorting += new GridViewSortEventHandler (Gridview_sorting);
940 g.Sort("Item",SortDirection.Descending);
941 Assert.AreEqual (true, sortingaction, "AfterSorting");
944 protected void Gridview_sorting (object sender, GridViewSortEventArgs e)
946 sortingaction = true;
950 public void GridView_IsBindableType ()
952 Type [] types = new Type [] {
971 GridView g = new GridView ();
972 foreach (Type type in types)
973 Assert.AreEqual (true, g.IsBindableType (type), type.ToString ());
975 Assert.AreEqual (false, g.IsBindableType (typeof (Enum)), "test");
976 Assert.AreEqual (false, g.IsBindableType (typeof (Object)), "test");
980 public void GridView_CreateAutoGeneratedColumn ()
982 PokerGridView g = new PokerGridView ();
983 AutoGeneratedFieldProperties fp = new AutoGeneratedFieldProperties();
984 fp.Name = "testfield";
985 fp.Type = typeof (string);
986 AutoGeneratedField gf = g.DoCreateAutoGeneratedColumn (fp);
987 Assert.AreEqual (typeof (string), gf.DataType , "AutoGeneratedColumn#1");
988 Assert.AreEqual ("testfield", gf.HeaderText, "AutoGeneratedColumn#2");
989 Assert.AreEqual ("System.Web.UI.WebControls.AutoGeneratedField", gf.GetType ().ToString (), "AutoGeneratedColumn#3");
993 public void GridView_CreateChildControls ()
995 PokerGridView g = new PokerGridView ();
996 g.Page = new Page ();
999 Assert.AreEqual(6,g.DoCreateChildControls(myds,true),"CreateChildControls#1");
1001 g.AllowPaging = true;
1004 Assert.AreEqual (6, g.DoCreateChildControls (myds, true), "CreateChildControls#1");
1007 class MyEnumSource : IEnumerable
1011 public MyEnumSource (int count)
1016 #region IEnumerable Members
1018 public IEnumerator GetEnumerator ()
1020 for (int i = 0; i < _count; i++)
1028 public void GridView_CreateChildControls_2 ()
1030 PokerGridView g = new PokerGridView ();
1031 g.AutoGenerateColumns = false;
1032 g.AutoGenerateSelectButton = true;
1033 g.EmptyDataText = "empty";
1034 g.Page = new Page ();
1035 g.DataSource = new MyEnumSource (20);
1037 //Assert.AreEqual (20, g.DoCreateChildControls (new MyEnumSource (20), true), "CreateChildControls#1");
1038 Assert.AreEqual (0, g.DoCreateChildControls (new MyEnumSource (0), true), "CreateChildControls#2");
1042 public void GridView_CreateChildControls_1 ()
1044 PokerGridView g = new PokerGridView ();
1045 g.AutoGenerateSelectButton = true;
1046 g.EmptyDataText = "empty";
1047 Assert.AreEqual (0, g.DoCreateChildControls (new object [0], false), "CreateChildControls#2");
1048 Assert.AreEqual (-1, g.DoCreateChildControls (new object [5], false), "CreateChildControls#3");
1052 public void GridView_NullDS ()
1054 PokerGridView g = new PokerGridView ();
1055 g.DataSource = null;
1057 Assert.AreEqual (0, g.Rows.Count, "NullDS");
1061 public void GridView_CreateChildTable ()
1063 PokerGridView g = new PokerGridView ();
1064 g.ID = "PokerGridView";
1065 g.Caption = "Caption";
1066 g.CaptionAlign = TableCaptionAlign.Right;
1069 Table t = g.DoCreateChildTable ();
1070 Assert.IsNotNull (t, "CreateChildTable#1");
1071 Assert.AreEqual (false, t.ControlStyleCreated, "CreateChildTable#2");
1075 public void GridView_CreateControlStyle ()
1077 PokerGridView g = new PokerGridView ();
1078 g.BorderColor = Color.Red;
1079 g.BorderStyle = BorderStyle.Dashed;
1080 Style s = g.DoCreateControlStyle ();
1081 Assert.AreEqual (typeof(TableStyle), s.GetType(), "CreateControlStyle#1");
1082 Assert.AreEqual (((TableStyle) s).GridLines, GridLines.Both, "CreateControlStyle#2");
1083 Assert.AreEqual (((TableStyle) s).CellSpacing, 0, "CreateControlStyle#3");
1087 public void GridView_CreateRow ()
1089 PokerGridView g = new PokerGridView ();
1090 GridViewRow gr = g.doCreateRow(0, 0, DataControlRowType.Pager, DataControlRowState.Normal);
1091 Assert.AreEqual (0, gr.RowIndex, "CreateRow#1");
1092 Assert.AreEqual (0, gr.DataItemIndex, "CreateRow#2");
1093 Assert.AreEqual (DataControlRowType.Pager, gr.RowType, "CreateRow#3");
1094 Assert.AreEqual (DataControlRowState.Normal, gr.RowState, "CreateRow#4");
1098 public void GridView_GetCallbackResult()
1100 Page page = new Page ();
1101 PokerGridView g = new PokerGridView ();
1102 page.Controls.Add (g);
1103 string s = g.doGetCallbackResult ();
1104 if (s == null || s == string.Empty)
1105 Assert.Fail ("GetCallbackResult");
1109 public void GridView_InitializePager ()
1111 PokerGridView gv = new PokerGridView ();
1112 Page page = new Page ();
1113 page.Controls.Add (gv);
1114 gv.AllowPaging = true;
1116 gv.DataSource = myds;
1117 Assert.AreEqual (false, gv.ifPagerInitilized, "BeforeInitializePagerRunned");
1118 Assert.AreEqual (0, gv.PageCount, "BeforeInitializePagerPageCount");
1120 Assert.AreEqual (true, gv.ifPagerInitilized, "AfterInitializePagerRunned");
1121 Assert.AreEqual (3, gv.PageCount, "AfterInitializePagerPageCount");
1125 public void GridView_InitializeRow ()
1127 // not implemented yet
1131 public void GridView_ViewState ()
1133 PokerGridView gv = new PokerGridView ();
1134 PokerGridView copy = new PokerGridView ();
1135 gv.AllowPaging = true;
1136 gv.AllowSorting = true;
1137 gv.BackColor = Color.Red;
1138 object state = gv.SaveState ();
1139 copy.LoadState (state);
1140 Assert.AreEqual (true, copy.AllowPaging, "ViewStateAllowPaging");
1141 Assert.AreEqual (true, copy.AllowSorting, "ViewStateAllowSorting");
1142 Assert.AreEqual (Color.Red, copy.BackColor, "ViewStateBackColor");
1145 // Private variables for bubble events
1146 private bool bubbledeleterow;
1147 private bool bubbleupdaterow;
1148 private bool bubbleeditingrow;
1149 private bool bubblesortint;
1150 private bool bubblecanceling;
1151 private bool bubbleselect;
1152 private bool bubblepage;
1153 private int newPageIndex;
1156 public void GridView_BubbleEvent ()
1158 PokerGridView gv = new PokerGridView ();
1159 Page page = new Page ();
1160 LinkButton lb = new LinkButton ();
1161 gv.AllowPaging = true;
1162 page.Controls.Add (gv);
1163 gv.DataSource = myds;
1167 gv.RowDeleting += new GridViewDeleteEventHandler (gv_RowDeleting);
1168 gv.RowUpdating += new GridViewUpdateEventHandler (gv_RowUpdating);
1169 gv.RowEditing += new GridViewEditEventHandler (gv_RowEditing);
1170 gv.Sorting += new GridViewSortEventHandler (gv_Sorting);
1171 gv.RowCancelingEdit += new GridViewCancelEditEventHandler (gv_RowCancelingEdit);
1172 gv.SelectedIndexChanging+=new GridViewSelectEventHandler(gv_SelectedIndexChanging);
1173 gv.PageIndexChanging+=new GridViewPageEventHandler(gv_PageIndexChanging);
1175 GridViewCommandEventArgs com1 = new GridViewCommandEventArgs (lb, new CommandEventArgs ("Delete", "0"));
1176 Assert.AreEqual (false, bubbledeleterow, "BeforeBubbleEventDeleteRow");
1177 gv.DoOnBubbleEvent (gv, com1);
1178 Assert.AreEqual (true, bubbledeleterow, "AfterBubbleEventDeleteRow");
1180 GridViewCommandEventArgs com2 = new GridViewCommandEventArgs (lb, new CommandEventArgs ("Update", "0"));
1181 Assert.AreEqual (false, bubbleupdaterow, "BeforeBubbleEventUpdateRow");
1182 gv.DoOnBubbleEvent (gv, com2);
1183 Assert.AreEqual (true, bubbleupdaterow, "AfterBubbleEventUpdateRow");
1185 GridViewCommandEventArgs com3 = new GridViewCommandEventArgs (lb, new CommandEventArgs ("Edit", "0"));
1186 Assert.AreEqual (false, bubbleeditingrow, "BeforeBubbleEventEditingRow");
1187 gv.DoOnBubbleEvent (gv, com3);
1188 Assert.AreEqual (true, bubbleeditingrow, "AfterBubbleEventEditingRow");
1190 gv.AllowSorting = true;
1191 GridViewCommandEventArgs com4 = new GridViewCommandEventArgs (lb, new CommandEventArgs ("Sort", null));
1192 Assert.AreEqual (false, bubblesortint, "BeforeBubbleEventSortingRow");
1193 gv.DoOnBubbleEvent (gv, com4);
1194 Assert.AreEqual (true, bubblesortint, "AfterBubbleEventSortingRow");
1196 GridViewCommandEventArgs com5 = new GridViewCommandEventArgs (lb, new CommandEventArgs ("Cancel", null));
1197 Assert.AreEqual (false, bubblecanceling, "BeforeBubbleEventcancelingEdit");
1198 gv.DoOnBubbleEvent (gv, com5);
1199 Assert.AreEqual (true, bubblecanceling, "AfterBubbleEventcancelingEdit");
1201 GridViewCommandEventArgs com6 = new GridViewCommandEventArgs (gv.SelectedRow, lb, new CommandEventArgs ("Select", "2"));
1202 Assert.AreEqual (false, bubbleselect, "BeforeBubbleEventSelect");
1203 gv.DoOnBubbleEvent (gv, com6);
1204 Assert.AreEqual (true, bubbleselect, "AfterBubbleEventSelect");
1206 GridViewCommandEventArgs com7 = new GridViewCommandEventArgs (lb, new CommandEventArgs ("Page", "Next"));
1207 Assert.AreEqual (false, bubblepage, "BeforeBubbleEventNextPage");
1208 gv.DoOnBubbleEvent (gv, com7);
1209 Assert.AreEqual (true, bubblepage, "AfterBubbleEventNextPage");
1210 Assert.AreEqual (1, newPageIndex, "NextPage");
1213 GridViewCommandEventArgs com8 = new GridViewCommandEventArgs (lb, new CommandEventArgs ("Page", "Prev"));
1214 Assert.AreEqual (false, bubblepage, "BeforeBubbleEventPrevPage");
1215 gv.DoOnBubbleEvent (gv, com8);
1216 Assert.AreEqual (true, bubblepage, "AfterBubbleEventPrevPage");
1217 Assert.AreEqual (-1, newPageIndex, "PrevPage");
1219 GridViewCommandEventArgs com9 = new GridViewCommandEventArgs (lb, new CommandEventArgs ("Page", "Last"));
1220 Assert.AreEqual (false, bubblepage, "BeforeBubbleEventLastPage");
1221 gv.DoOnBubbleEvent (gv, com9);
1222 Assert.AreEqual (true, bubblepage, "AfterBubbleEventLastPage");
1224 GridViewCommandEventArgs com10 = new GridViewCommandEventArgs (lb, new CommandEventArgs ("Page", "First"));
1225 Assert.AreEqual (false, bubblepage, "BeforeBubbleEventFirstPage");
1226 gv.DoOnBubbleEvent (gv, com10);
1227 Assert.AreEqual (true, bubblepage, "AfterBubbleEventFirstPage");
1228 Assert.AreEqual (0, newPageIndex, "FirstPage");
1231 private void gv_RowDeleting (object sender, EventArgs e)
1233 bubbledeleterow = true;
1237 private void gv_RowUpdating (object sender, EventArgs e)
1239 bubbleupdaterow = true;
1243 private void gv_RowEditing (object sender, EventArgs e)
1245 bubbleeditingrow = true;
1249 private void gv_Sorting (object sender, EventArgs e)
1251 bubblesortint = true;
1255 private void gv_RowCancelingEdit (object sender, EventArgs e)
1257 bubblecanceling = true;
1258 gridViewCancelEdit = true;
1261 private void gv_SelectedIndexChanging (object sender, GridViewSelectEventArgs e)
1263 bubbleselect = true;
1264 selectIndexChanging = true;
1265 Assert.AreEqual (2, e.NewSelectedIndex, "SelectedIndexChanging");
1268 private void gv_PageIndexChanging (object sender, GridViewPageEventArgs e)
1271 pageIndexChanging = true;
1272 newPageIndex = e.NewPageIndex;
1276 private void ResetEvents ()
1279 dataBinding = false;
1280 pageIndexChanging = false;
1281 gridViewCancelEdit = false;
1282 rowDeleting = false;
1284 rowUpdating = false;
1285 selectIndexChanging = false;
1290 private bool dataBinding;
1291 private bool dataBound;
1294 private bool pageIndexChanged;
1295 private bool pageIndexChanging;
1296 private bool preRender;
1297 private bool gridViewCancelEdit;
1298 private bool rowCommand;
1299 private bool rowCreated;
1300 private bool rowDataBound;
1301 private bool rowDeleted;
1302 private bool rowDeleting;
1303 private bool rowEditing;
1304 private bool rowUpdated;
1305 private bool rowUpdating;
1306 private bool selectIndexChanged;
1307 private bool selectIndexChanging;
1308 private bool sorted;
1309 private bool sorting;
1310 private bool unload;
1313 public void GridView_Events ()
1315 PokerGridView gv = new PokerGridView ();
1316 gv.DataSource = myds;
1318 gv.DataBinding += new EventHandler (gv_DataBinding);
1319 gv.DataBound += new EventHandler (gv_DataBound);
1320 gv.PageIndexChanging += new GridViewPageEventHandler (gv_PageIndexChanging);
1321 gv.PageIndexChanged += new EventHandler (gv_PageIndexChanged);
1322 gv.PreRender += new EventHandler (gv_PreRender);
1323 gv.RowCancelingEdit += new GridViewCancelEditEventHandler (gv_RowCancelingEdit);
1324 gv.RowCommand += new GridViewCommandEventHandler (gv_RowCommand);
1325 gv.RowCreated += new GridViewRowEventHandler (gv_RowCreated);
1326 gv.RowDataBound += new GridViewRowEventHandler (gv_RowDataBound);
1327 gv.RowDeleted += new GridViewDeletedEventHandler(gv_RowDeleted);
1328 gv.RowDeleting+= new GridViewDeleteEventHandler(gv_RowDeleting);
1329 gv.RowEditing+=new GridViewEditEventHandler(gv_RowEditing);
1330 gv.RowUpdated+= new GridViewUpdatedEventHandler(gv_RowUpdated);
1331 gv.RowUpdating+=new GridViewUpdateEventHandler(gv_RowUpdating);
1332 gv.SelectedIndexChanged +=new EventHandler(gv_SelectedIndexChanged);
1333 gv.SelectedIndexChanging+=new GridViewSelectEventHandler(gv_SelectedIndexChanging);
1334 gv.Sorted +=new EventHandler(gv_Sorted);
1335 gv.Sorting +=new GridViewSortEventHandler(gv_Sorting);
1336 gv.Unload+=new EventHandler(gv_Unload);
1339 Assert.AreEqual (false, dataBinding, "BeforeDataBinding");
1340 gv.DoOnDataBinding (new EventArgs ());
1341 Assert.AreEqual (true, dataBinding, "AfterDataBinding");
1342 Assert.AreEqual (false, dataBound, "BeforeDataBound");
1343 gv.DoOnDataBound (new EventArgs ());
1344 Assert.AreEqual (true, dataBound, "AfterDataBound");
1345 Assert.AreEqual (false, pageIndexChanged, "BeforepageIndexChanged");
1346 gv.DoOnPageIndexChanged (new EventArgs ());
1347 Assert.AreEqual (true, pageIndexChanged, "AfterpageIndexChanged");
1349 Assert.AreEqual (false, pageIndexChanging, "BeforepageIndexChanging");
1350 gv.DoOnPageIndexChanging (new GridViewPageEventArgs(1));
1351 Assert.AreEqual (true, pageIndexChanging, "AfterpageIndexChanging");
1352 Assert.AreEqual (false, preRender, "BeforePreRender");
1353 gv.DoOnPreRender (new EventArgs ());
1354 Assert.AreEqual (true, preRender, "AfterPreRender");
1356 Assert.AreEqual (false, gridViewCancelEdit, "BeforeGridViewCancelEdit");
1357 gv.DoOnRowCancelingEdit (new GridViewCancelEditEventArgs (1));
1358 Assert.AreEqual (true, gridViewCancelEdit, "AfterGridViewCancelEdit");
1360 Assert.AreEqual (false, rowCommand, "BeforeRowCommand");
1361 LinkButton lb= new LinkButton();
1362 gv.DoOnRowCommand (new GridViewCommandEventArgs(lb,new CommandEventArgs("",null)));
1363 Assert.AreEqual (true, rowCommand, "AfterRowCommand");
1364 Assert.AreEqual (false, rowCreated, "BeforeRowCreated");
1365 gv.DoOnRowCreated (new GridViewRowEventArgs (gv.SelectedRow));
1366 Assert.AreEqual (true, rowCommand, "AfterRowCreated");
1367 Assert.AreEqual (false, rowDataBound, "BeforeRowDataBound");
1368 gv.DoOnRowDataBound (new GridViewRowEventArgs (gv.SelectedRow));
1369 Assert.AreEqual (true, rowDataBound, "AfterRowDataBound");
1370 Assert.AreEqual (false, rowDeleted, "BeforeRowDeleted");
1371 gv.DoOnRowDeleted(new GridViewDeletedEventArgs(1,new ArgumentException()));
1372 Assert.AreEqual (true, rowDeleted, "AfterRowDeleted");
1374 Assert.AreEqual (false, rowDeleting, "BeforeRowDeleting");
1375 gv.DoOnRowDeleting (new GridViewDeleteEventArgs (0));
1376 Assert.AreEqual (true, rowDeleting, "AfterRowDeleting");
1378 Assert.AreEqual (false, rowEditing, "BeforeRowEditing");
1379 gv.DoOnRowEditing (new GridViewEditEventArgs (0));
1380 Assert.AreEqual (true, rowEditing, "AfterRowEditing");
1381 Assert.AreEqual (false, rowUpdated, "BeforeRowUpdated");
1382 gv.DoOnRowUpdated (new GridViewUpdatedEventArgs(1,new Exception()));
1383 Assert.AreEqual (true, rowUpdated, "AfterRowUpdated");
1385 Assert.AreEqual (false, rowUpdating, "BeforeRowUpdating");
1386 gv.DoOnRowUpdating (new GridViewUpdateEventArgs (0));
1387 Assert.AreEqual (true, rowUpdating, "AfterRowUpdating");
1388 Assert.AreEqual (false, selectIndexChanged, "BeforeSelectedIndexChanged");
1389 gv.DoOnSelectedIndexChanged (new EventArgs ());
1390 Assert.AreEqual (true, selectIndexChanged, "AfterSelectedIndexChanged");
1392 Assert.AreEqual (false, selectIndexChanging, "BeforeSelectedIndexChanging");
1393 gv.DoOnSelectedIndexChanging (new GridViewSelectEventArgs (2));
1394 Assert.AreEqual (true, selectIndexChanging, "AfterSelectedIndexChanging");
1395 Assert.AreEqual (false, sorted, "BeforeSorted");
1396 gv.DoOnSorted (new EventArgs ());
1397 Assert.AreEqual (true, sorted, "AfterSorted");
1398 Assert.AreEqual (false, sorting, "BeforeSorting");
1399 gv.DoOnSorting(new GridViewSortEventArgs("",SortDirection.Ascending));
1400 Assert.AreEqual (true, sorting, "AfterSorting");
1401 Assert.AreEqual (false, unload, "BeforeUnload");
1402 gv.DoOnUnload (new EventArgs ());
1403 Assert.AreEqual (true, unload, "AfterUnload");
1407 private void gv_Unload (object sender, EventArgs e)
1412 private void gv_Sorted (object sender, EventArgs e)
1417 private void gv_SelectedIndexChanged (object sender, EventArgs e)
1419 selectIndexChanged = true;
1422 private void gv_RowUpdated (object sender, EventArgs e)
1427 private void gv_RowDeleted (object sender, EventArgs e)
1432 private void gv_RowDataBound (object sender, EventArgs e)
1434 rowDataBound = true;
1437 private void gv_RowCreated (object sender, EventArgs e)
1442 private void gv_RowCommand (object sender, EventArgs e)
1447 private void gv_PreRender (object sender, EventArgs e)
1452 private void gv_DataBinding (object sender, EventArgs e)
1457 private void gv_DataBound (object sender, EventArgs e)
1462 private void gv_Init (object sender, EventArgs e)
1467 private void gv_Load (object sender, EventArgs e)
1472 private void gv_PageIndexChanged (object sender, EventArgs e)
1474 pageIndexChanged = true;
1478 [Category ("NunitWeb")]
1479 public void GridView_DataSourceChangedEvent ()
1481 WebTest t = new WebTest ();
1482 PageDelegates pd = new PageDelegates ();
1483 pd.Load = GridView_Init;
1484 pd.PreRenderComplete = GridView_Load;
1485 t.Invoker = new PageInvoker (pd);
1487 FormRequest fr = new FormRequest (t.Response, "form1");
1488 fr.Controls.Add ("__EVENTTARGET");
1489 fr.Controls.Add ("__EVENTARGUMENT");
1490 fr.Controls["__EVENTTARGET"].Value = "";
1491 fr.Controls["__EVENTARGUMENT"].Value = "";
1494 if (t.UserData == null)
1495 Assert.Fail ("DataSourceChangedEvent#1");
1496 Assert.AreEqual ("Data_rebounded", t.UserData.ToString (), "DataSourceChangedEvent#2");
1499 #region GridView_DataSourceChangedEvent
1500 public static void GridView_Init (Page p)
1502 PokerGridView gv = new PokerGridView ();
1503 DS data = new DS ();
1504 p.Controls.Add (gv);
1505 p.Controls.Add (data);
1506 data.TypeName = typeof (DS).AssemblyQualifiedName;
1507 data.SelectMethod = "GetList";
1509 gv.DataBinding += new EventHandler (data_DataBinding);
1510 gv.DataSourceID = "Data";
1513 public static void GridView_Load (Page p)
1516 DS data = (DS) p.FindControl ("Data");
1518 Assert.Fail ("Data soource control not created#1");
1519 data.DoRaiseDataSourceChangedEvent (new EventArgs ());
1523 public static void data_DataBinding (object sender, EventArgs e)
1525 if (((WebControl) sender).Page.IsPostBack)
1526 WebTest.CurrentTest.UserData = "Data_rebounded";
1531 public void GridView_PerformDataBiding ()
1533 PokerGridView gv = new PokerGridView ();
1534 gv.DoPerformDataBinding (myds);
1535 Assert.AreEqual (6, gv.Rows.Count, "PerformDataBiding_Rows");
1539 public void GridView_PrepareControlHierarchy ()
1541 PokerGridView gv = new PokerGridView ();
1542 gv.controlHierarchy = false;
1544 Assert.AreEqual (0, gv.Controls.Count, "ControlHierarchy_ControlsCount");
1545 Assert.AreEqual (true, gv.controlHierarchy, "ControlHierarchy_FirstFlow");
1546 gv.DataSource = myds;
1548 gv.controlHierarchy = false;
1550 Assert.AreEqual (1, gv.Controls.Count, "ControlHierarchy_ControlsCountSecondaryFlow");
1551 Assert.AreEqual (true, gv.controlHierarchy, "ControlHierarchy_SecondaryFlow");
1555 public void GridView_State ()
1557 PokerGridView g = new PokerGridView ();
1558 PokerGridView copy = new PokerGridView ();
1560 string[] test = new String[1];
1562 g.DataKeyNames = test;
1566 object state = g.DoSaveControlState ();
1567 copy.DoLoadControlState (state);
1569 Assert.AreEqual ("test", copy.DataKeyNames[0], "DataKeyNames");
1570 Assert.AreEqual (0, copy.EditIndex, "EditIndex");
1571 Assert.AreEqual (2, copy.PageIndex, "PageIndex");
1576 public void GridView_DefaultsRender ()
1578 PokerGridView b = new PokerGridView ();
1579 string html = b.Render ();
1580 Assert.AreEqual(-1 ,b.Render().IndexOf("table"), "RenderViewState");
1584 public void GridView_Render ()
1586 PokerGridView b = new PokerGridView ();
1587 b.DataSource = myds;
1589 string OriginControlHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\">Item</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td>Norway</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>Sweden</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>France</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>Italy</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>Israel</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>Russia</td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
1590 string RenderedControlHtml = b.Render ();
1591 HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "Rendering");
1595 public void GridView_RenderAllowPaging ()
1597 string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderAllowPaging)).Run ();
1598 string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
1600 string OriginControlHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\">Item</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td>Norway</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>Sweden</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><table>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td><span>1</span></td><td><a href=\"javascript:__doPostBack('ctl01','Page$2')\">2</a></td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table></td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
1602 string OriginControlHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\">Item</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td>Norway</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>Sweden</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><table border=\"0\">\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td><span>1</span></td><td><a href=\"javascript:__doPostBack('ctl01','Page$2')\">2</a></td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table></td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
1604 HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderDefault");
1607 public static void RenderAllowPaging (Page p)
1609 ArrayList myds = new ArrayList ();
1610 myds.Add ("Norway");
1611 myds.Add ("Sweden");
1612 myds.Add ("France");
1614 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
1615 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
1616 PokerGridView b = new PokerGridView ();
1617 p.Form.Controls.Add (lcb);
1618 p.Form.Controls.Add (b);
1619 b.AllowPaging = true;
1621 b.DataSource = myds;
1623 p.Form.Controls.Add (lce);
1627 [Category("NunitWeb")]
1628 public void GridView_RenderAllowPaging2 ()
1630 string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderAllowPaging2)).Run ();
1631 string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
1633 string OriginControlHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\">Item</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td>France</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>Italy</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><table>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td><a href=\"javascript:__doPostBack('ctl01','Page$1')\">1</a></td><td><span>2</span></td><td><a href=\"javascript:__doPostBack('ctl01','Page$3')\">3</a></td><td><a href=\"javascript:__doPostBack('ctl01','Page$4')\">4</a></td><td><a href=\"javascript:__doPostBack('ctl01','Page$5')\">...</a></td><td><a href=\"javascript:__doPostBack('ctl01','Page$Last')\">>></a></td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table></td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
1635 string OriginControlHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\">Item</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td>France</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>Italy</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><table border=\"0\">\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td><a href=\"javascript:__doPostBack('ctl01','Page$1')\">1</a></td><td><span>2</span></td><td><a href=\"javascript:__doPostBack('ctl01','Page$3')\">3</a></td><td><a href=\"javascript:__doPostBack('ctl01','Page$4')\">4</a></td><td><a href=\"javascript:__doPostBack('ctl01','Page$5')\">...</a></td><td><a href=\"javascript:__doPostBack('ctl01','Page$Last')\">>></a></td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table></td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
1637 HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderDefault");
1640 public static void RenderAllowPaging2 (Page p)
1642 ArrayList myds = new ArrayList ();
1643 myds.Add ("Norway");
1644 myds.Add ("Sweden");
1645 myds.Add ("France");
1647 myds.Add ("Norway");
1648 myds.Add ("Sweden");
1649 myds.Add ("France");
1651 myds.Add ("Norway");
1652 myds.Add ("Sweden");
1653 myds.Add ("France");
1655 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
1656 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
1657 PokerGridView b = new PokerGridView ();
1658 p.Form.Controls.Add (lcb);
1659 p.Form.Controls.Add (b);
1660 b.AllowPaging = true;
1663 b.PagerSettings.PageButtonCount = 4;
1664 b.PagerSettings.Mode= PagerButtons.NumericFirstLast;
1665 b.DataSource = myds;
1667 p.Form.Controls.Add (lce);
1671 public void GridView_RenderProperty ()
1673 string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderProperty)).Run ();
1674 string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
1676 string OriginControlHtml = "<div id=\"__gvctl01__div\">\r\n\t<table cellspacing=\"1\" cellpadding=\"0\" align=\"Justify\" rules=\"rows\" border=\"1\" style=\"background-image:url(http://test);\">\r\n\t\t<caption align=\"Left\">\r\n\t\t\ttest\r\n\t\t</caption><tr>\r\n\t\t\t<td><a href=\"javascript:__doPostBack('ctl01','Edit$0')\">Edit</a> <a href=\"javascript:__doPostBack('ctl01','Delete$0')\">Delete</a></td><td>Norway</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><a href=\"javascript:__doPostBack('ctl01','Edit$1')\">Edit</a> <a href=\"javascript:__doPostBack('ctl01','Delete$1')\">Delete</a></td><td>Sweden</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><a href=\"javascript:__doPostBack('ctl01','Edit$2')\">Edit</a> <a href=\"javascript:__doPostBack('ctl01','Delete$2')\">Delete</a></td><td>France</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><a href=\"javascript:__doPostBack('ctl01','Edit$3')\">Edit</a> <a href=\"javascript:__doPostBack('ctl01','Delete$3')\">Delete</a></td><td>Italy</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td> </td><td> </td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
1678 string OriginControlHtml = "<div id=\"__gvctl01__div\">\r\n\t<table cellspacing=\"1\" cellpadding=\"0\" align=\"Justify\" rules=\"rows\" border=\"1\" style=\"background-image:url(http://test);\">\r\n\t\t<caption align=\"Left\">\r\n\t\t\ttest\r\n\t\t</caption><tr>\r\n\t\t\t<td><a href=\"javascript:__doPostBack('ctl01','Edit$0')\">Edit</a> <a href=\"javascript:__doPostBack('ctl01','Delete$0')\">Delete</a></td><td>Norway</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><a href=\"javascript:__doPostBack('ctl01','Edit$1')\">Edit</a> <a href=\"javascript:__doPostBack('ctl01','Delete$1')\">Delete</a></td><td>Sweden</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><a href=\"javascript:__doPostBack('ctl01','Edit$2')\">Edit</a> <a href=\"javascript:__doPostBack('ctl01','Delete$2')\">Delete</a></td><td>France</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><a href=\"javascript:__doPostBack('ctl01','Edit$3')\">Edit</a> <a href=\"javascript:__doPostBack('ctl01','Delete$3')\">Delete</a></td><td>Italy</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td> </td><td> </td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
1680 HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderDefault");
1683 public static void RenderProperty (Page p)
1685 // Array list for simple datasource
1686 ArrayList myds = new ArrayList ();
1687 myds.Add ("Norway");
1688 myds.Add ("Sweden");
1689 myds.Add ("France");
1692 // Helper controls for searching usefull data from page
1693 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
1694 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
1695 PokerGridView g = new PokerGridView ();
1697 // Changing some property for test
1698 g.AutoGenerateDeleteButton = true;
1699 g.AutoGenerateEditButton = true;
1700 g.BackImageUrl = "http://test";
1702 g.CaptionAlign = TableCaptionAlign.Left;
1705 g.EnableSortingAndPagingCallbacks = true;
1706 g.GridLines = GridLines.Horizontal;
1707 g.HorizontalAlign = HorizontalAlign.Justify;
1708 g.ShowFooter = true;
1709 g.ShowHeader = false;
1710 g.UseAccessibleHeader = false;
1712 // Add controls for page
1713 p.Form.Controls.Add (lcb);
1714 p.Form.Controls.Add (g);
1716 // Data source and bind
1717 g.DataSource = myds;
1719 p.Form.Controls.Add (lce);
1723 /// From here rendering all possible field types and kinds of
1728 public void GridView_RenderingBoundField ()
1730 string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderingBoundField)).Run ();
1731 string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
1732 string OriginControlHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\">HeaderText</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td>1</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>2</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FooterText</td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
1733 HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderingBoundField");
1737 public void GridView_RenderingCheckBoxField ()
1739 string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderingCheckBoxField)).Run ();
1740 string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
1742 string OriginControlHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\">HeaderText</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td><span class=\"aspNetDisabled\"><input id=\"ctl01_ctl00_0\" type=\"checkbox\" name=\"ctl01$ctl02$ctl00\" checked=\"checked\" disabled=\"disabled\" /></span></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><span class=\"aspNetDisabled\"><input id=\"ctl01_ctl00_1\" type=\"checkbox\" name=\"ctl01$ctl03$ctl00\" disabled=\"disabled\" /></span></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FooterText</td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
1744 string OriginControlHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\">HeaderText</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td><span disabled=\"disabled\"><input id=\"ctl01_ctl02_ctl00\" type=\"checkbox\" name=\"ctl01$ctl02$ctl00\" checked=\"checked\" disabled=\"disabled\" /></span></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><span disabled=\"disabled\"><input id=\"ctl01_ctl03_ctl00\" type=\"checkbox\" name=\"ctl01$ctl03$ctl00\" disabled=\"disabled\" /></span></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FooterText</td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
1746 HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderingCheckBoxField");
1750 public void GridView_RenderingCheckBoxField2 ()
1752 string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderingCheckBoxField2)).Run ();
1753 string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
1755 string OriginControlHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\">bool</th><th scope=\"col\">str</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td><span class=\"aspNetDisabled\" title=\"bool\"><input id=\"ctl01_ctl00_0\" type=\"checkbox\" name=\"ctl01$ctl02$ctl00\" checked=\"checked\" disabled=\"disabled\" /></span></td><td>1</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><span class=\"aspNetDisabled\" title=\"bool\"><input id=\"ctl01_ctl00_1\" type=\"checkbox\" name=\"ctl01$ctl03$ctl00\" disabled=\"disabled\" /></span></td><td>2</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td> </td><td> </td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
1757 string OriginControlHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\">bool</th><th scope=\"col\">str</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td><span disabled=\"disabled\" title=\"bool\"><input id=\"ctl01_ctl02_ctl00\" type=\"checkbox\" name=\"ctl01$ctl02$ctl00\" checked=\"checked\" disabled=\"disabled\" /></span></td><td>1</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><span disabled=\"disabled\" title=\"bool\"><input id=\"ctl01_ctl03_ctl00\" type=\"checkbox\" name=\"ctl01$ctl03$ctl00\" disabled=\"disabled\" /></span></td><td>2</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td> </td><td> </td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
1759 HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderingCheckBoxField2");
1763 public void GridView_RenderingImageField ()
1765 string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderingImageField)).Run ();
1766 string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
1768 string OriginControlHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\">HeaderText</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td><img src=\"1\" alt=\"1\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><img src=\"2\" alt=\"2\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FooterText</td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
1770 string OriginControlHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\">HeaderText</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td><img src=\"1\" alt=\"1\" style=\"border-width:0px;\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><img src=\"2\" alt=\"2\" style=\"border-width:0px;\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FooterText</td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
1772 HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderingImageField");
1776 public void GridView_RenderingCommandField ()
1778 string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderingCommandField)).Run ();
1779 string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
1781 string OriginControlHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\">HeaderText</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td><a href=\"javascript:__doPostBack('ctl01','Edit$0')\">Edit</a> <a href=\"javascript:__doPostBack('ctl01','Delete$0')\">Delete</a> <a href=\"javascript:__doPostBack('ctl01','New$0')\">New</a> <a href=\"javascript:__doPostBack('ctl01','Select$0')\">Select</a></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><a href=\"javascript:__doPostBack('ctl01','Edit$1')\">Edit</a> <a href=\"javascript:__doPostBack('ctl01','Delete$1')\">Delete</a> <a href=\"javascript:__doPostBack('ctl01','New$1')\">New</a> <a href=\"javascript:__doPostBack('ctl01','Select$1')\">Select</a></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FooterText</td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
1783 string OriginControlHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\">HeaderText</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td><a href=\"javascript:__doPostBack('ctl01','Edit$0')\">Edit</a> <a href=\"javascript:__doPostBack('ctl01','Delete$0')\">Delete</a> <a href=\"javascript:__doPostBack('ctl01','New$0')\">New</a> <a href=\"javascript:__doPostBack('ctl01','Select$0')\">Select</a></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><a href=\"javascript:__doPostBack('ctl01','Edit$1')\">Edit</a> <a href=\"javascript:__doPostBack('ctl01','Delete$1')\">Delete</a> <a href=\"javascript:__doPostBack('ctl01','New$1')\">New</a> <a href=\"javascript:__doPostBack('ctl01','Select$1')\">Select</a></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FooterText</td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
1785 HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderingCommandField");
1789 public void GridView_RenderingHyperLinkField ()
1791 string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderingHyperLinkField)).Run ();
1792 string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
1793 string OriginControlHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\">HeaderText</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td><a href=\"1\">1</a></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><a href=\"2\">2</a></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FooterText</td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
1794 HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderingHyperLinkField");
1798 public void GridView_RenderingButtonField ()
1800 string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderingButtonField)).Run ();
1801 string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
1803 string OriginControlHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\">HeaderText</th><th scope=\"col\">HeaderText</th><th scope=\"col\">HeaderText</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td><input type=\"button\" value=\"1\" onclick=\"javascript:__doPostBack('ctl01','$0')\" /></td><td><a href=\"javascript:__doPostBack('ctl01','cmd2$0')\">1</a></td><td><input type=\"image\" src=\"\" alt=\"1\" onclick=\"javascript:__doPostBack('ctl01','cmd3$0');return false;\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><input type=\"button\" value=\"2\" onclick=\"javascript:__doPostBack('ctl01','$1')\" /></td><td><a href=\"javascript:__doPostBack('ctl01','cmd2$1')\">2</a></td><td><input type=\"image\" src=\"\" alt=\"2\" onclick=\"javascript:__doPostBack('ctl01','cmd3$1');return false;\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FooterText</td><td>FooterText</td><td>FooterText</td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
1805 string OriginControlHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\">HeaderText</th><th scope=\"col\">HeaderText</th><th scope=\"col\">HeaderText</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td><input type=\"button\" value=\"1\" onclick=\"javascript:__doPostBack('ctl01','$0')\" /></td><td><a href=\"javascript:__doPostBack('ctl01','cmd2$0')\">1</a></td><td><input type=\"image\" src=\"\" alt=\"1\" onclick=\"javascript:__doPostBack('ctl01','cmd3$0')\" style=\"border-width:0px;\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><input type=\"button\" value=\"2\" onclick=\"javascript:__doPostBack('ctl01','$1')\" /></td><td><a href=\"javascript:__doPostBack('ctl01','cmd2$1')\">2</a></td><td><input type=\"image\" src=\"\" alt=\"2\" onclick=\"javascript:__doPostBack('ctl01','cmd3$1')\" style=\"border-width:0px;\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FooterText</td><td>FooterText</td><td>FooterText</td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
1807 HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderingButtonField");
1810 [Test (Description="Bug #551666")]
1811 public void TableSections_Bug551666 ()
1813 string html = new WebTest ("TableSections_Bug551666.aspx").Run ();
1814 string renderedHtml = HtmlDiff.GetControlFromPageHtml (html);
1815 string originalHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"GridView1\" style=\"border-collapse:collapse;\">\r\n\t\t<thead>\r\n\t\t\t<tr>\r\n\t\t\t\t<th scope=\"col\">Dosage</th><th scope=\"col\">Drug</th><th scope=\"col\">Patient</th><th scope=\"col\">Date</th>\r\n\t\t\t</tr>\r\n\t\t</thead><tbody>\r\n\t\t\t<tr>\r\n\t\t\t\t<td>25</td><td>Indocin</td><td>David</td><td>2009-11-13</td>\r\n\t\t\t</tr><tr>\r\n\t\t\t\t<td>50</td><td>Enebrel</td><td>Sam</td><td>2009-11-13</td>\r\n\t\t\t</tr><tr>\r\n\t\t\t\t<td>10</td><td>Hydralazine</td><td>Christoff</td><td>2009-11-13</td>\r\n\t\t\t</tr><tr>\r\n\t\t\t\t<td>21</td><td>Combivent</td><td>Janet</td><td>2009-11-13</td>\r\n\t\t\t</tr><tr>\r\n\t\t\t\t<td>100</td><td>Dilantin</td><td>Melanie</td><td>2009-11-13</td>\r\n\t\t\t</tr>\r\n\t\t</tbody><tfoot>\r\n\r\n\t\t</tfoot>\r\n\t</table>\r\n</div>";
1817 HtmlDiff.AssertAreEqual (originalHtml, renderedHtml, "#A1");
1821 public void GridView_RenderingTemplateField ()
1823 string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderingTemplateField)).Run ();
1824 string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
1826 string OriginControlHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"grid\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\"><input name=\"grid$ctl01$TextBox1\" type=\"text\" id=\"grid_TextBox1\" /></th>\r\n\t\t</tr><tr>\r\n\t\t\t<td><input name=\"grid$ctl02$TextBox1\" type=\"text\" value=\"1\" id=\"grid_TextBox1_0\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><input name=\"grid$ctl03$TextBox1\" type=\"text\" value=\"2\" id=\"grid_TextBox1_1\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><input name=\"grid$ctl04$TextBox1\" type=\"text\" id=\"grid_TextBox1\" /></td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
1828 string OriginControlHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"grid\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\"><input name=\"grid$ctl01$TextBox1\" type=\"text\" id=\"grid_ctl01_TextBox1\" /></th>\r\n\t\t</tr><tr>\r\n\t\t\t<td><input name=\"grid$ctl02$TextBox1\" type=\"text\" value=\"1\" id=\"grid_ctl02_TextBox1\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><input name=\"grid$ctl03$TextBox1\" type=\"text\" value=\"2\" id=\"grid_ctl03_TextBox1\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><input name=\"grid$ctl04$TextBox1\" type=\"text\" id=\"grid_ctl04_TextBox1\" /></td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
1830 HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderingTemplateField");
1833 public static void RenderingTemplateField (Page p)
1835 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
1836 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
1837 GridView grid = new GridView ();
1839 grid.AutoGenerateColumns = false;
1840 grid.ShowFooter = true;
1841 TemplateField templatefield = new TemplateField ();
1842 templatefield.InsertVisible = true;
1843 templatefield.Visible = true;
1844 templatefield.HeaderText = "HeaderText";
1845 templatefield.FooterText = "FooterText";
1846 templatefield.ItemTemplate = new CompiledTemplateBuilder(BuildControl_itemtemplate);
1847 templatefield.HeaderTemplate = new CompiledTemplateBuilder (BuildControl_itemtemplate);
1848 templatefield.FooterTemplate= new CompiledTemplateBuilder (BuildControl_itemtemplate);
1849 grid.DataSource = GridViewTest.CreateDataSource ();
1850 grid.Columns.Add (templatefield);
1851 p.Form.Controls.Add (lcb);
1852 p.Form.Controls.Add (grid);
1853 p.Form.Controls.Add (lce);
1857 private static void BuildControl_itemtemplate (Control container)
1860 ctrl = new TextBox ();
1861 ctrl.ID = "TextBox1";
1862 ctrl.DataBinding += MyDataBinding;
1863 container.Controls.Add (ctrl);
1866 private static void MyDataBinding (object sender, EventArgs e)
1869 IDataItemContainer Container;
1870 Target = (TextBox) sender;
1871 Container = (IDataItemContainer) Target.BindingContainer;
1872 if ((Target.Page.GetDataItem () != null))
1873 Target.Text = Convert.ToString (DataBinder.Eval (Target.Page.GetDataItem(),"str"));
1877 public static void RenderingButtonField (Page p)
1879 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
1880 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
1881 GridView grid = new GridView ();
1882 grid.AutoGenerateColumns = false;
1883 grid.ShowFooter = true;
1884 p.Form.Controls.Add (lcb);
1885 p.Form.Controls.Add (grid);
1886 p.Form.Controls.Add (lce);
1888 ButtonField buttonfield = new ButtonField ();
1889 buttonfield.HeaderText = "HeaderText";
1890 buttonfield.FooterText = "FooterText";
1891 buttonfield.ButtonType = ButtonType.Button;
1892 buttonfield.DataTextField = STRINGFIELD;
1894 ButtonField buttonfieldlink = new ButtonField ();
1895 buttonfieldlink.HeaderText = "HeaderText";
1896 buttonfieldlink.FooterText = "FooterText";
1897 buttonfieldlink.ButtonType = ButtonType.Link;
1898 buttonfieldlink.DataTextField = STRINGFIELD;
1899 buttonfieldlink.CommandName = "cmd2";
1901 ButtonField buttonfieldimage = new ButtonField ();
1902 buttonfieldimage.HeaderText = "HeaderText";
1903 buttonfieldimage.FooterText = "FooterText";
1904 buttonfieldimage.ButtonType = ButtonType.Image;
1905 buttonfieldimage.DataTextField = STRINGFIELD;
1906 buttonfieldimage.CommandName = "cmd3";
1908 grid.DataSource = GridViewTest.CreateDataSource ();
1909 grid.Columns.Add (buttonfield);
1910 grid.Columns.Add (buttonfieldlink);
1911 grid.Columns.Add (buttonfieldimage);
1915 public static void RenderingHyperLinkField (Page p)
1917 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
1918 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
1919 GridView grid = new GridView ();
1920 grid.AutoGenerateColumns = false;
1921 grid.ShowFooter = true;
1922 p.Form.Controls.Add (lcb);
1923 p.Form.Controls.Add (grid);
1924 p.Form.Controls.Add (lce);
1925 HyperLinkField hyperlinkfield = new HyperLinkField ();
1926 hyperlinkfield.DataTextField = STRINGFIELD;
1927 string[] str = new string[] { STRINGFIELD };
1928 hyperlinkfield.DataNavigateUrlFields = str;
1929 hyperlinkfield.HeaderText = "HeaderText";
1930 hyperlinkfield.FooterText = "FooterText";
1931 grid.DataSource = GridViewTest.CreateDataSource ();
1932 grid.Columns.Add (hyperlinkfield);
1936 public static void RenderingCommandField (Page p)
1938 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
1939 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
1940 GridView grid = new GridView ();
1941 grid.AutoGenerateColumns = false;
1942 grid.ShowFooter = true;
1943 p.Form.Controls.Add (lcb);
1944 p.Form.Controls.Add (grid);
1945 p.Form.Controls.Add (lce);
1946 CommandField commandfield = new CommandField ();
1947 commandfield.HeaderText = "HeaderText";
1948 commandfield.FooterText = "FooterText";
1949 commandfield.ShowCancelButton = true;
1950 commandfield.ShowDeleteButton = true;
1951 commandfield.ShowEditButton = true;
1952 commandfield.ShowInsertButton = true;
1953 commandfield.ShowSelectButton = true;
1954 grid.DataSource = GridViewTest.CreateDataSource ();
1955 grid.Columns.Add (commandfield);
1959 public static void RenderingImageField (Page p)
1961 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
1962 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
1963 GridView grid = new GridView ();
1964 grid.AutoGenerateColumns = false;
1965 grid.ShowFooter = true;
1966 p.Form.Controls.Add (lcb);
1967 p.Form.Controls.Add (grid);
1968 p.Form.Controls.Add (lce);
1969 ImageField imagefield = new ImageField ();
1970 imagefield.HeaderText = "HeaderText";
1971 imagefield.FooterText = "FooterText";
1972 imagefield.DataImageUrlField = STRINGFIELD;
1973 imagefield.DataAlternateTextField = STRINGFIELD;
1974 grid.DataSource = GridViewTest.CreateDataSource ();
1975 grid.Columns.Add (imagefield);
1979 public static void RenderingBoundField (Page p)
1981 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
1982 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
1983 GridView grid = new GridView ();
1984 grid.AutoGenerateColumns = false;
1985 grid.ShowFooter = true;
1986 p.Form.Controls.Add (lcb);
1987 p.Form.Controls.Add (grid);
1988 p.Form.Controls.Add (lce);
1989 BoundField boundfield = new BoundField ();
1990 boundfield.DataField = STRINGFIELD;
1991 boundfield.HeaderText = "HeaderText";
1992 boundfield.FooterText = "FooterText";
1993 grid.DataSource = GridViewTest.CreateDataSource ();
1994 grid.Columns.Add (boundfield);
1998 public static void RenderingCheckBoxField (Page p)
2000 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
2001 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
2002 GridView grid = new GridView ();
2003 grid.AutoGenerateColumns = false;
2004 grid.ShowFooter = true;
2005 CheckBoxField checkboxfield = new CheckBoxField ();
2006 checkboxfield.DataField = BOOLFIELD;
2007 checkboxfield.HeaderText = "HeaderText";
2008 checkboxfield.FooterText = "FooterText";
2009 p.Form.Controls.Add (lcb);
2010 p.Form.Controls.Add (grid);
2011 p.Form.Controls.Add (lce);
2012 grid.DataSource = GridViewTest.CreateDataSource ();
2013 grid.Columns.Add (checkboxfield);
2017 public static void RenderingCheckBoxField2 (Page p)
2019 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
2020 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
2021 GridView grid = new GridView ();
2022 grid.AutoGenerateColumns = true;
2023 grid.ShowFooter = true;
2024 p.Form.Controls.Add (lcb);
2025 p.Form.Controls.Add (grid);
2026 p.Form.Controls.Add (lce);
2027 grid.DataSource = GridViewTest.CreateDataSource ();
2030 ///////////////////////////////////////////////////////
2031 ///// GRIDVIEW POSTBACK //////
2032 ///////////////////////////////////////////////////////
2035 public void GridView_GetPostBackOptions ()
2037 GridView gv = new GridView ();
2038 gv.Page = new Page ();
2039 IButtonControl btn = new Button ();
2040 btn.CausesValidation = false;
2041 Assert.IsFalse (btn.CausesValidation);
2042 Assert.AreEqual (String.Empty, btn.CommandName);
2043 Assert.AreEqual (String.Empty, btn.CommandArgument);
2044 Assert.AreEqual (String.Empty, btn.PostBackUrl);
2045 Assert.AreEqual (String.Empty, btn.ValidationGroup);
2046 PostBackOptions options = ((IPostBackContainer) gv).GetPostBackOptions (btn);
2047 Assert.IsFalse (options.PerformValidation);
2048 Assert.IsFalse (options.AutoPostBack);
2049 Assert.IsFalse (options.TrackFocus);
2050 Assert.IsTrue (options.ClientSubmit);
2051 Assert.IsTrue (options.RequiresJavaScriptProtocol);
2052 Assert.AreEqual ("$", options.Argument);
2053 Assert.AreEqual (null, options.ActionUrl);
2054 Assert.AreEqual (null, options.ValidationGroup);
2056 btn.ValidationGroup = "VG";
2057 btn.CommandName = "CMD";
2058 btn.CommandArgument = "ARG";
2059 btn.PostBackUrl = "Page.aspx";
2060 Assert.IsFalse (btn.CausesValidation);
2061 Assert.AreEqual ("CMD", btn.CommandName);
2062 Assert.AreEqual ("ARG", btn.CommandArgument);
2063 Assert.AreEqual ("Page.aspx", btn.PostBackUrl);
2064 Assert.AreEqual ("VG", btn.ValidationGroup);
2065 options = ((IPostBackContainer) gv).GetPostBackOptions (btn);
2066 Assert.IsFalse (options.PerformValidation);
2067 Assert.IsFalse (options.AutoPostBack);
2068 Assert.IsFalse (options.TrackFocus);
2069 Assert.IsTrue (options.ClientSubmit);
2070 Assert.IsTrue (options.RequiresJavaScriptProtocol);
2071 Assert.AreEqual ("CMD$ARG", options.Argument);
2072 Assert.AreEqual (null, options.ActionUrl);
2073 Assert.AreEqual (null, options.ValidationGroup);
2077 [ExpectedException (typeof (InvalidOperationException))]
2078 public void GridView_GetPostBackOptions_CausesValidation ()
2080 GridView gv = new GridView ();
2081 gv.Page = new Page ();
2082 IButtonControl btn = new Button ();
2083 Assert.IsTrue (btn.CausesValidation);
2084 Assert.AreEqual (String.Empty, btn.CommandName);
2085 Assert.AreEqual (String.Empty, btn.CommandArgument);
2086 Assert.AreEqual (String.Empty, btn.PostBackUrl);
2087 Assert.AreEqual (String.Empty, btn.ValidationGroup);
2088 PostBackOptions options = ((IPostBackContainer) gv).GetPostBackOptions (btn);
2092 [ExpectedException(typeof(ArgumentNullException))]
2093 public void GridView_GetPostBackOptions_Null_Argument ()
2095 GridView gv = new GridView ();
2096 gv.Page = new Page ();
2097 PostBackOptions options = ((IPostBackContainer) gv).GetPostBackOptions (null);
2101 [Category ("NunitWeb")]
2102 public void GridView_PostBackSotring ()
2104 WebTest t = new WebTest (PageInvoker.CreateOnLoad (GridView_postback));
2105 string pageHTML = t.Run ();
2106 Assert.AreEqual (-1, pageHTML.IndexOf ("SortingSuccess"), "BeforeSorting");
2107 FormRequest fr = new FormRequest (t.Response, "form1");
2108 fr.Controls.Add ("__EVENTTARGET");
2109 fr.Controls.Add ("__EVENTARGUMENT");
2110 fr.Controls["__EVENTTARGET"].Value = "mygrid";
2111 fr.Controls["__EVENTARGUMENT"].Value = "Sort$Item";
2113 t.Invoker = PageInvoker.CreateOnLoad (GridView_postback);
2114 pageHTML = t.Run ();
2115 if (pageHTML.IndexOf ("SortingSuccess") < 0)
2116 Assert.Fail ("SortingFail");
2120 [Category ("NunitWeb")]
2121 public void GridView_PostBackPaging ()
2123 WebTest t = new WebTest (PageInvoker.CreateOnLoad (GridView_postback));
2124 string pageHTML = t.Run ();
2125 Assert.AreEqual (-1, pageHTML.IndexOf ("PagingSuccess"), "BeforePaging");
2126 FormRequest fr = new FormRequest (t.Response, "form1");
2127 fr.Controls.Add ("__EVENTTARGET");
2128 fr.Controls.Add ("__EVENTARGUMENT");
2129 fr.Controls["__EVENTTARGET"].Value = "mygrid";
2130 fr.Controls["__EVENTARGUMENT"].Value = "Page$2";
2132 t.Invoker = PageInvoker.CreateOnLoad (GridView_postback);
2133 pageHTML = t.Run ();
2134 if (pageHTML.IndexOf ("PagingSuccess") < 0)
2135 Assert.Fail ("PagingFail");
2139 [Category ("NunitWeb")]
2140 public void GridView_PostBackDelete ()
2142 WebTest t = new WebTest (PageInvoker.CreateOnLoad (GridView_postback));
2143 string pageHTML = t.Run ();
2144 Assert.AreEqual (-1, pageHTML.IndexOf ("DeleteSuccess"), "BeforeDelete");
2145 FormRequest fr = new FormRequest (t.Response, "form1");
2146 fr.Controls.Add ("__EVENTTARGET");
2147 fr.Controls.Add ("__EVENTARGUMENT");
2148 fr.Controls["__EVENTTARGET"].Value = "mygrid";
2149 fr.Controls["__EVENTARGUMENT"].Value = "Delete$0";
2151 t.Invoker = PageInvoker.CreateOnLoad (GridView_postback);
2152 pageHTML = t.Run ();
2153 if (pageHTML.IndexOf ("DeleteSuccess") < 0)
2154 Assert.Fail ("DeleteFail");
2158 [Category ("NunitWeb")]
2159 public void GridView_PostBackDeleteItem ()
2161 WebTest t = new WebTest ();
2162 PageDelegates pd = new PageDelegates ();
2163 pd.Load = GridView_postbackdeleteitem;
2164 pd.PreRenderComplete = GridView_checkrows;
2165 t.Invoker = new PageInvoker (pd);
2166 string pageHTML = t.Run ();
2167 if (pageHTML.IndexOf ("Delete") < 0){
2168 Assert.Fail ("BeforeDelete");
2170 Assert.AreEqual (1, t.UserData , "ObjectDataSource before delete from grid");
2171 FormRequest fr = new FormRequest (t.Response, "form1");
2172 fr.Controls.Add ("__EVENTTARGET");
2173 fr.Controls.Add ("__EVENTARGUMENT");
2174 fr.Controls["__EVENTTARGET"].Value = "Grid";
2175 fr.Controls["__EVENTARGUMENT"].Value = "Delete$0";
2177 pageHTML = t.Run ();
2178 Assert.AreEqual (0, t.UserData , "ObjectDataSource after delete from grid");
2181 public static void GridView_checkrows (Page p)
2183 GridView grid = p.FindControl ("Grid") as GridView;
2185 Assert.Fail ("GridView does not created");
2187 WebTest.CurrentTest.UserData = grid.Rows.Count;
2190 public static void GridView_postbackdeleteitem (Page p)
2192 GridView grid = new GridView ();
2193 ObjectDataSource ds = new ObjectDataSource ();
2194 ds.ID = "ObjectDataSource2";
2196 ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataObject";
2197 ds.SelectMethod = "Select";
2198 ds.DeleteMethod = "Delete";
2199 ds.InsertMethod = "Insert";
2200 ds.UpdateMethod = "Update";
2201 Parameter p1 = new Parameter ("ID", TypeCode.String);
2202 Parameter p2 = new Parameter ("FName", TypeCode.String);
2203 Parameter p3 = new Parameter ("LName", TypeCode.String);
2204 ds.DeleteParameters.Add (p1);
2205 ds.DeleteParameters.Add (p2);
2206 ds.DeleteParameters.Add (p3);
2208 grid.DataKeyNames = new string[] { "ID", "FName", "LName" };
2209 grid.AutoGenerateDeleteButton = true;
2210 grid.DataSourceID = "ObjectDataSource2";
2211 p.Form.Controls.Add (ds);
2212 p.Form.Controls.Add (grid);
2217 [Category ("NunitWeb")]
2218 public void GridView_PostBackUpdateItem ()
2220 WebTest t = new WebTest ();
2221 PageDelegates pd = new PageDelegates ();
2222 pd.Load = GridView_postbackupdateitem;
2223 pd.PreRenderComplete = GridView_checkrowsupdate;
2224 t.Invoker = new PageInvoker (pd);
2225 string pageHTML = t.Run ();
2226 if (pageHTML.IndexOf ("Edit") < 0)
2227 Assert.Fail ("BeforeEdit");
2229 string[] merged_data = t.UserData as string[];
2230 if (merged_data == null)
2231 Assert.Fail ("Grid rows not created#1");
2233 Assert.AreEqual ("1001", merged_data[1], "Row before update#1");
2234 Assert.AreEqual ("Mahesh", merged_data[2], "Row before update#2");
2235 Assert.AreEqual ("Chand", merged_data[3], "Row before update#3");
2237 FormRequest fr = new FormRequest (t.Response, "form1");
2238 fr.Controls.Add ("__EVENTTARGET");
2239 fr.Controls.Add ("__EVENTARGUMENT");
2240 fr.Controls["__EVENTTARGET"].Value = "Grid";
2241 fr.Controls["__EVENTARGUMENT"].Value = "Edit$0";
2244 pageHTML = t.Run ();
2246 merged_data = t.UserData as string[];
2247 if (merged_data == null)
2248 Assert.Fail ("Grid rows not created#2");
2250 fr = new FormRequest (t.Response, "form1");
2251 fr.Controls.Add ("__EVENTTARGET");
2252 fr.Controls.Add ("__EVENTARGUMENT");
2253 fr.Controls.Add (merged_data[4]);
2254 fr.Controls.Add (merged_data[5]);
2255 fr.Controls.Add (merged_data[6]);
2257 fr.Controls["__EVENTTARGET"].Value = merged_data[0];
2258 fr.Controls["__EVENTARGUMENT"].Value = "";
2259 fr.Controls[merged_data[4]].Value = "1001";
2260 fr.Controls[merged_data[5]].Value = "TestEname";
2261 fr.Controls[merged_data[6]].Value = "TestLname";
2263 pageHTML = t.Run ();
2265 merged_data = t.UserData as string[];
2266 if (merged_data == null)
2267 Assert.Fail ("Grid rows not created#3");
2269 Assert.AreEqual ("1001", merged_data[1], "Row before update#1");
2270 Assert.AreEqual ("TestEname", merged_data[2], "Row before update#2");
2271 Assert.AreEqual ("TestLname", merged_data[3], "Row before update#3");
2274 public static void GridView_postbackupdateitem (Page p)
2277 DataObject.Reset ();
2279 GridView grid = new GridView ();
2280 ObjectDataSource ds = new ObjectDataSource ();
2282 ds.ID = "ObjectDataSource2";
2283 ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataObject";
2284 ds.SelectMethod = "Select";
2285 ds.DeleteMethod = "Delete";
2286 ds.InsertMethod = "Insert";
2287 ds.UpdateMethod = "Update";
2289 Parameter p1 = new Parameter ("ID", TypeCode.String);
2290 Parameter p2 = new Parameter ("FName", TypeCode.String);
2291 Parameter p3 = new Parameter ("LName", TypeCode.String);
2293 ds.UpdateParameters.Add (p1);
2294 ds.UpdateParameters.Add (p2);
2295 ds.UpdateParameters.Add (p3);
2298 grid.AutoGenerateEditButton = true;
2300 grid.AutoGenerateColumns = false;
2302 BoundField field = new BoundField ();
2303 field.DataField = "ID";
2304 grid.Columns.Add (field);
2306 field = new BoundField ();
2307 field.DataField = "FName";
2308 grid.Columns.Add (field);
2310 field = new BoundField ();
2311 field.DataField = "LName";
2312 grid.Columns.Add (field);
2314 grid.DataSourceID = "ObjectDataSource2";
2315 p.Form.Controls.Add (ds);
2316 p.Form.Controls.Add (grid);
2319 public static void GridView_checkrowsupdate (Page p)
2321 GridView grid = p.FindControl ("Grid") as GridView;
2323 Assert.Fail ("Gridview does not been created");
2325 string[] data = new string[7];
2327 data[0] = grid.Rows[0].Cells[0].Controls[0].UniqueID;
2328 } catch (Exception e) {
2329 Assert.Fail ("Update button not been created" + e.Message);
2332 data[1] = grid.Rows[0].Cells[1].Text;
2333 data[2] = grid.Rows[0].Cells[2].Text;
2334 data[3] = grid.Rows[0].Cells[3].Text;
2336 if (grid.Rows[0].Cells[1].Controls.Count > 0) {
2337 data[4] = grid.Rows[0].Cells[1].Controls[0].UniqueID;
2338 data[5] = grid.Rows[0].Cells[2].Controls[0].UniqueID;
2339 data[6] = grid.Rows[0].Cells[3].Controls[0].UniqueID;
2342 WebTest.CurrentTest.UserData = data;
2346 [Category ("NunitWeb")]
2347 public void GridView_PostBackEdit ()
2349 WebTest t = new WebTest (PageInvoker.CreateOnLoad (GridView_postback));
2350 string pageHTML = t.Run ();
2351 Assert.AreEqual (-1, pageHTML.IndexOf ("EditSuccess"), "BeforeEdit");
2352 FormRequest fr = new FormRequest (t.Response, "form1");
2353 fr.Controls.Add ("__EVENTTARGET");
2354 fr.Controls.Add ("__EVENTARGUMENT");
2355 fr.Controls["__EVENTTARGET"].Value = "mygrid";
2356 fr.Controls["__EVENTARGUMENT"].Value = "Edit$0";
2358 t.Invoker = PageInvoker.CreateOnLoad (GridView_postback);
2359 pageHTML = t.Run ();
2360 if (pageHTML.IndexOf ("EditSuccess") < 0)
2361 Assert.Fail ("EditFail");
2364 public void GridView_postback (Page p)
2366 PokerGridView b = new PokerGridView ();
2368 b.PageIndexChanging += new GridViewPageEventHandler (b_PageIndexChanging);
2369 b.Sorting += new GridViewSortEventHandler (b_Sorting);
2370 b.RowDeleting += new GridViewDeleteEventHandler (b_RowDeleting);
2371 b.RowEditing += new GridViewEditEventHandler (b_RowEditing);
2373 ArrayList myds = new ArrayList ();
2374 myds.Add ("Norway");
2375 myds.Add ("Sweden");
2376 myds.Add ("France");
2379 p.Form.Controls.Add (b);
2380 b.AllowPaging = true;
2382 b.AllowSorting = true;
2384 b.AutoGenerateDeleteButton = true;
2385 b.AutoGenerateEditButton = true;
2386 b.AutoGenerateSelectButton = true;
2388 b.DataSource = myds;
2394 public void b_RowEditing (object o, GridViewEditEventArgs e)
2396 ((GridView) o).Page.Controls.Add (new LiteralControl ("EditSuccess"));
2397 Assert.AreEqual (false, e.Cancel, "EditCancel");
2398 Assert.AreEqual (0, e.NewEditIndex, "NewEditIndex");
2401 public void b_PageIndexChanging (object o, GridViewPageEventArgs e)
2403 ((GridView) o).Page.Controls.Add (new LiteralControl ("PagingSuccess"));
2404 Assert.AreEqual(false,e.Cancel,"Cancel");
2407 public void b_Sorting (object o, GridViewSortEventArgs e)
2409 ((GridView) o).Page.Controls.Add (new LiteralControl ("SortingSuccess"));
2412 public void b_RowDeleting (object o, GridViewDeleteEventArgs e)
2414 ((GridView) o).Page.Controls.Add (new LiteralControl ("DeleteSuccess"));
2417 public void b_SelectedIndexChanging (object o, GridViewSelectEventArgs e)
2419 ((GridView) o).Page.Controls.Add (new LiteralControl ("SelectSuccess"));
2423 //////// Post back events /////////////
2425 [Category ("NunitWeb")]
2426 public void GridView_PostBackRowEvents ()
2428 WebTest t = new WebTest ("NoEventValidation.aspx");
2429 t.UserData = new Hashtable ();
2430 t.Invoker = PageInvoker.CreateOnInit (new PageDelegate (_PostBackRowEvents));
2431 string html = t.Run ();
2433 // Check if events done
2434 CustomEventAssert(t,"RowCreated");
2435 CustomEventAssert (t,"RowDataBound");
2437 // Remove grid to edit mode (Edit button pressed)
2438 FormRequest fr = new FormRequest (t.Response, "form1");
2439 fr.Controls.Add ("__EVENTTARGET");
2440 fr.Controls.Add ("__EVENTARGUMENT");
2441 fr.Controls["__EVENTTARGET"].Value = "Grid";
2442 fr.Controls["__EVENTARGUMENT"].Value = "Edit$0";
2444 t.UserData = new Hashtable ();
2447 // Check if events done
2448 CustomEventAssert (t,"RowCreated");
2449 CustomEventAssert (t,"RowCommand");
2450 CustomEventAssert (t,"RowEditing");
2451 CustomEventAssert (t,"RowDataBound");
2453 // Cancel button pressed
2454 fr = new FormRequest (t.Response, "form1");
2455 fr.Controls.Add ("__EVENTTARGET");
2456 fr.Controls.Add ("__EVENTARGUMENT");
2457 fr.Controls["__EVENTTARGET"].Value = "Grid";
2458 fr.Controls["__EVENTARGUMENT"].Value = "Cancel$0";
2460 t.UserData = new Hashtable ();
2463 // Check if events done
2464 CustomEventAssert (t,"RowCreated");
2465 CustomEventAssert (t,"RowCommand");
2466 CustomEventAssert (t,"RowCancelingEdit");
2467 CustomEventAssert (t,"RowDataBound");
2471 [Category ("NunitWeb")]
2472 public void GridView_PostBackUpdateEvents ()
2474 WebTest t = new WebTest ("NoEventValidation.aspx");
2475 t.UserData = new Hashtable ();
2476 t.Invoker = PageInvoker.CreateOnInit (new PageDelegate (_PostBackRowEvents));
2477 string html = t.Run ();
2479 // Remove grid to edit mode (Edit button pressed)
2480 FormRequest fr = new FormRequest (t.Response, "form1");
2481 fr.Controls.Add ("__EVENTTARGET");
2482 fr.Controls.Add ("__EVENTARGUMENT");
2483 fr.Controls["__EVENTTARGET"].Value = "Grid";
2484 fr.Controls["__EVENTARGUMENT"].Value = "Edit$0";
2488 // Update button pressed
2489 fr = new FormRequest (t.Response, "form1");
2490 fr.Controls.Add ("__EVENTTARGET");
2491 fr.Controls.Add ("__EVENTARGUMENT");
2493 fr.Controls.Add ("Grid$ctl02$ctl02");
2494 fr.Controls.Add ("Grid$ctl02$ctl03");
2495 fr.Controls.Add ("Grid$ctl02$ctl04");
2497 fr.Controls.Add ("Grid$ctl02$ctl03");
2498 fr.Controls.Add ("Grid$ctl02$ctl04");
2499 fr.Controls.Add ("Grid$ctl02$ctl05");
2501 fr.Controls["__EVENTTARGET"].Value = "Grid$ctl02$ctl00";
2502 fr.Controls["__EVENTARGUMENT"].Value = "";
2504 fr.Controls["Grid$ctl02$ctl02"].Value = "1001";
2505 fr.Controls["Grid$ctl02$ctl03"].Value = "Mahesh";
2506 fr.Controls["Grid$ctl02$ctl04"].Value = "Chand";
2508 fr.Controls ["Grid$ctl02$ctl03"].Value = "1001";
2509 fr.Controls ["Grid$ctl02$ctl04"].Value = "Mahesh";
2510 fr.Controls ["Grid$ctl02$ctl05"].Value = "Chand";
2514 t.UserData = new Hashtable ();
2517 // Check if events done
2518 CustomEventAssert (t, "RowCreated");
2519 CustomEventAssert (t, "RowCommand");
2520 CustomEventAssert (t, "RowUpdating");
2521 CustomEventAssert (t, "RowUpdated");
2522 CustomEventAssert (t, "RowDataBound");
2526 [Category ("NunitWeb")]
2527 public void GridView_PostBackPagingEvents ()
2529 WebTest t = new WebTest ("NoEventValidation.aspx");
2530 t.UserData = new Hashtable ();
2531 t.Invoker = PageInvoker.CreateOnInit (new PageDelegate (_PostBackPagingEvents));
2532 string html = t.Run ();
2535 FormRequest fr = new FormRequest (t.Response, "form1");
2536 fr.Controls.Add ("__EVENTTARGET");
2537 fr.Controls.Add ("__EVENTARGUMENT");
2538 fr.Controls["__EVENTTARGET"].Value = "Grid";
2539 fr.Controls["__EVENTARGUMENT"].Value = "Page$2";
2543 // Check if events done
2544 CustomEventAssert (t, "PageIndexChanging");
2545 CustomEventAssert (t, "PageIndexChanged");
2549 [Category ("NunitWeb")]
2550 public void GridView_PostBackSortingEvents ()
2552 WebTest t = new WebTest ("NoEventValidation.aspx");
2553 t.UserData = new Hashtable ();
2554 t.Invoker = PageInvoker.CreateOnInit (new PageDelegate (_PostBackSortingEvents));
2555 string html = t.Run ();
2558 FormRequest fr = new FormRequest (t.Response, "form1");
2559 fr.Controls.Add ("__EVENTTARGET");
2560 fr.Controls.Add ("__EVENTARGUMENT");
2561 fr.Controls["__EVENTTARGET"].Value = "Grid";
2562 fr.Controls["__EVENTARGUMENT"].Value = "Sort$ID";
2566 // Check if events done
2567 CustomEventAssert (t, "Sorting");
2568 CustomEventAssert (t, "Sorted");
2572 [Category ("NunitWeb")]
2573 public void GridView_PostBackSelectingEvents ()
2575 WebTest t = new WebTest ("NoEventValidation.aspx");
2576 t.UserData = new Hashtable ();
2577 t.Invoker = PageInvoker.CreateOnInit (new PageDelegate (_PostBackSelectingEvents));
2578 string html = t.Run ();
2581 FormRequest fr = new FormRequest (t.Response, "form1");
2582 fr.Controls.Add ("__EVENTTARGET");
2583 fr.Controls.Add ("__EVENTARGUMENT");
2584 fr.Controls["__EVENTTARGET"].Value = "Grid";
2585 fr.Controls["__EVENTARGUMENT"].Value = "Select$0";
2589 // Check if events done
2590 CustomEventAssert (t, "SelectedIndexChanging");
2591 CustomEventAssert (t, "SelectedIndexChanged");
2594 #region PostBackEvents_helpers
2596 private void CustomEventAssert (WebTest t, string c)
2598 Hashtable local = t.UserData as Hashtable;
2600 Assert.Fail ("User data not created");
2601 if(!local.ContainsValue(c))
2602 Assert.Fail (c + " not fired!");
2605 public static void _PostBackSelectingEvents (Page p)
2608 DataObjects.Reset ();
2610 GridView grid = new GridView ();
2611 ObjectDataSource ds = new ObjectDataSource ();
2612 grid.SelectedIndexChanged += new EventHandler (grid_SelectedIndexChanged);
2613 grid.SelectedIndexChanging += new GridViewSelectEventHandler (grid_SelectedIndexChanging);
2614 ds.ID = "ObjectDataSource2";
2615 ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataObjects";
2616 ds.SelectMethod = "Select";
2617 ds.DeleteMethod = "Delete";
2618 ds.InsertMethod = "Insert";
2619 ds.UpdateMethod = "Update";
2621 grid.AutoGenerateColumns = true;
2622 grid.AutoGenerateSelectButton = true;
2623 grid.DataSourceID = "ObjectDataSource2";
2624 p.Form.Controls.Add (ds);
2625 p.Form.Controls.Add (grid);
2628 public static void _PostBackSortingEvents (Page p)
2631 DataObjects.Reset ();
2633 GridView grid = new GridView ();
2634 ObjectDataSource ds = new ObjectDataSource ();
2635 ds.ID = "ObjectDataSource2";
2636 ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataObjects";
2637 ds.SelectMethod = "Select";
2638 ds.DeleteMethod = "Delete";
2639 ds.InsertMethod = "Insert";
2640 ds.UpdateMethod = "Update";
2642 grid.Sorted += new EventHandler (grid_Sorted);
2643 grid.Sorting += new GridViewSortEventHandler (grid_Sorting);
2644 grid.AllowSorting = true;
2646 grid.AutoGenerateColumns = true;
2648 grid.DataSourceID = "ObjectDataSource2";
2649 p.Form.Controls.Add (ds);
2650 p.Form.Controls.Add (grid);
2654 public static void _PostBackPagingEvents (Page p)
2657 DataObjects.Reset ();
2659 GridView grid = new GridView ();
2660 ObjectDataSource ds = new ObjectDataSource ();
2661 ds.ID = "ObjectDataSource2";
2662 ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataObjects";
2663 ds.SelectMethod = "Select";
2664 ds.DeleteMethod = "Delete";
2665 ds.InsertMethod = "Insert";
2666 ds.UpdateMethod = "Update";
2668 grid.PageIndexChanged += new EventHandler (grid_PageIndexChanged);
2669 grid.PageIndexChanging += new GridViewPageEventHandler (grid_PageIndexChanging);
2670 grid.AllowPaging = true;
2672 grid.AutoGenerateColumns = false;
2675 BoundField field = new BoundField ();
2676 field.DataField = "ID";
2677 grid.Columns.Add (field);
2679 field = new BoundField ();
2680 field.DataField = "FName";
2681 grid.Columns.Add (field);
2683 field = new BoundField ();
2684 field.DataField = "LName";
2685 grid.Columns.Add (field);
2687 grid.DataSourceID = "ObjectDataSource2";
2688 p.Form.Controls.Add (ds);
2689 p.Form.Controls.Add (grid);
2692 public static void _PostBackRowEvents (Page p)
2695 DataObject.Reset ();
2697 GridView grid = new GridView ();
2698 ObjectDataSource ds = new ObjectDataSource ();
2699 ds.ID = "ObjectDataSource2";
2700 ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataObject";
2701 ds.SelectMethod = "Select";
2702 ds.DeleteMethod = "Delete";
2703 ds.InsertMethod = "Insert";
2704 ds.UpdateMethod = "Update";
2707 grid.RowCancelingEdit += new GridViewCancelEditEventHandler (grid_RowCancelingEdit);
2708 grid.RowCommand += new GridViewCommandEventHandler (grid_RowCommand);
2709 grid.RowCreated += new GridViewRowEventHandler (grid_RowCreated);
2710 grid.RowDataBound += new GridViewRowEventHandler (grid_RowDataBound);
2711 grid.RowEditing += new GridViewEditEventHandler (grid__RowEditing);
2712 grid.RowUpdating += new GridViewUpdateEventHandler (grid_RowUpdating);
2713 grid.RowUpdated += new GridViewUpdatedEventHandler (grid_RowUpdated);
2714 grid.PageIndexChanged += new EventHandler (grid_PageIndexChanged);
2715 grid.PageIndexChanging += new GridViewPageEventHandler (grid_PageIndexChanging);
2717 Parameter p1 = new Parameter ("ID", TypeCode.String);
2718 Parameter p2 = new Parameter ("FName", TypeCode.String);
2719 Parameter p3 = new Parameter ("LName", TypeCode.String);
2721 ds.UpdateParameters.Add (p1);
2722 ds.UpdateParameters.Add (p2);
2723 ds.UpdateParameters.Add (p3);
2726 grid.AutoGenerateEditButton = true;
2728 grid.AutoGenerateColumns = false;
2730 BoundField field = new BoundField ();
2731 field.DataField = "ID";
2732 grid.Columns.Add (field);
2734 field = new BoundField ();
2735 field.DataField = "FName";
2736 grid.Columns.Add (field);
2738 field = new BoundField ();
2739 field.DataField = "LName";
2740 grid.Columns.Add (field);
2742 grid.DataSourceID = "ObjectDataSource2";
2743 p.Form.Controls.Add (ds);
2744 p.Form.Controls.Add (grid);
2747 static void grid_SelectedIndexChanging (object sender, GridViewSelectEventArgs e)
2749 Hashtable local = WebTest.CurrentTest.UserData as Hashtable;
2751 local.Add (local.Count, "SelectedIndexChanging");
2754 static void grid_SelectedIndexChanged (object sender, EventArgs e)
2756 Hashtable local = WebTest.CurrentTest.UserData as Hashtable;
2758 local.Add (local.Count, "SelectedIndexChanged");
2761 static void grid_PageIndexChanging (object sender, GridViewPageEventArgs e)
2763 Hashtable local = WebTest.CurrentTest.UserData as Hashtable;
2765 local.Add (local.Count, "PageIndexChanging");
2768 static void grid_PageIndexChanged (object sender, EventArgs e)
2770 Hashtable local = WebTest.CurrentTest.UserData as Hashtable;
2772 local.Add (local.Count, "PageIndexChanged");
2775 public static void grid_RowUpdated (object sender, GridViewUpdatedEventArgs e)
2777 Hashtable local = WebTest.CurrentTest.UserData as Hashtable;
2779 local.Add (local.Count, "RowUpdated");
2782 public static void grid_RowUpdating (object sender, GridViewUpdateEventArgs e)
2784 Hashtable local = WebTest.CurrentTest.UserData as Hashtable;
2786 local.Add (local.Count, "RowUpdating");
2789 public static void grid_RowEditing (object sender, GridViewEditEventArgs e)
2791 Hashtable local = WebTest.CurrentTest.UserData as Hashtable;
2793 local.Add (local.Count, "RowEditing");
2796 public static void grid_RowDataBound (object sender, GridViewRowEventArgs e)
2798 Hashtable local = WebTest.CurrentTest.UserData as Hashtable;
2800 local.Add (local.Count, "RowDataBound");
2803 public static void grid_RowCreated (object sender, GridViewRowEventArgs e)
2805 Hashtable local = WebTest.CurrentTest.UserData as Hashtable;
2807 local.Add (local.Count, "RowCreated");
2810 public static void grid_RowCommand (object sender, GridViewCommandEventArgs e)
2812 Hashtable local = WebTest.CurrentTest.UserData as Hashtable;
2814 local.Add (local.Count, "RowCommand");
2817 public static void grid_RowCancelingEdit (object sender, GridViewCancelEditEventArgs e)
2819 Hashtable local = WebTest.CurrentTest.UserData as Hashtable;
2821 local.Add (local.Count, "RowCancelingEdit");
2824 public static void grid__RowEditing (object sender, GridViewEditEventArgs e)
2826 Hashtable local = WebTest.CurrentTest.UserData as Hashtable;
2828 local.Add (local.Count, "RowEditing");
2831 static void grid_Sorting (object sender, GridViewSortEventArgs e)
2833 Hashtable local = WebTest.CurrentTest.UserData as Hashtable;
2835 local.Add (local.Count, "Sorting");
2838 static void grid_Sorted (object sender, EventArgs e)
2840 Hashtable local = WebTest.CurrentTest.UserData as Hashtable;
2842 local.Add (local.Count, "Sorted");
2848 /// All possible exceptions what can be thrown
2851 [ExpectedException (typeof (InvalidOperationException))]
2852 public void GridView_GetDefaultSelectedValue ()
2854 PokerGridView g = new PokerGridView ();
2855 object o = g.SelectedValue;
2859 [Category ("NunitWeb")]
2860 [Category ("NotDotNet")]
2861 public void GridViewUpdate ()
2863 WebTest t = new WebTest ("GridViewUpdate.aspx");
2864 string pageHTML = HtmlDiff.GetControlFromPageHtml (t.Run ());
2866 FormRequest fr = new FormRequest (t.Response, "form1");
2867 fr.Controls.Add ("__EVENTTARGET");
2868 fr.Controls.Add ("__EVENTARGUMENT");
2869 fr.Controls.Add ("GridView1$ctl02$Name"); // for .NET use "GridView1$ctl02$Name"
2870 fr.Controls.Add ("GridView1$ctl03$Name");
2871 fr.Controls ["__EVENTTARGET"].Value = "Button1";
2872 fr.Controls ["__EVENTARGUMENT"].Value = "";
2873 fr.Controls ["GridView1$ctl02$Name"].Value = "ABC";
2874 fr.Controls ["GridView1$ctl03$Name"].Value = "123";
2876 t.Invoker = PageInvoker.CreateOnLoad (GridView_postback);
2877 pageHTML = HtmlDiff.GetControlFromPageHtml (t.Run ());
2879 string original = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"GridView1\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\">ID</th><th scope=\"col\"> </th>\r\n\t\t</tr><tr>\r\n\t\t\t<td>1</td><td>\n <input name=\"GridView1$ctl02$Name\" type=\"text\" value=\"ABC\" id=\"GridView1_ctl02_Name\" />\n <input type=\"button\" name=\"GridView1$ctl02$b1\" value=\"upd\" onclick=\"javascript:__doPostBack('GridView1$ctl02$b1','')\" id=\"GridView1_ctl02_b1\" />\n </td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>2</td><td>\n <input name=\"GridView1$ctl03$Name\" type=\"text\" value=\"123\" id=\"GridView1_ctl03_Name\" />\n <input type=\"button\" name=\"GridView1$ctl03$b1\" value=\"upd\" onclick=\"javascript:__doPostBack('GridView1$ctl03$b1','')\" id=\"GridView1_ctl03_b1\" />\n </td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
2881 HtmlDiff.AssertAreEqual (original, pageHTML, "GridViewUpdate #1");
2883 fr = new FormRequest (t.Response, "form1");
2884 fr.Controls.Add ("__EVENTTARGET");
2885 fr.Controls.Add ("__EVENTARGUMENT");
2886 fr.Controls.Add ("GridView1$ctl02$Name");
2887 fr.Controls.Add ("GridView1$ctl03$Name");
2888 fr.Controls ["__EVENTTARGET"].Value = "GridView1$ctl02$b1";
2889 fr.Controls ["__EVENTARGUMENT"].Value = "";
2890 fr.Controls ["GridView1$ctl02$Name"].Value = "ABC";
2891 fr.Controls ["GridView1$ctl03$Name"].Value = "123";
2893 t.Invoker = PageInvoker.CreateOnLoad (GridView_postback);
2894 pageHTML = HtmlDiff.GetControlFromPageHtml (t.Run ());
2896 original = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"GridView1\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\">ID</th><th scope=\"col\"> </th>\r\n\t\t</tr><tr>\r\n\t\t\t<td>1</td><td>\n <input name=\"GridView1$ctl02$Name\" type=\"text\" value=\"ABC\" id=\"GridView1_ctl02_Name\" />\n <input type=\"button\" name=\"GridView1$ctl02$b1\" value=\"upd\" onclick=\"javascript:__doPostBack('GridView1$ctl02$b1','')\" id=\"GridView1_ctl02_b1\" />\n </td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>2</td><td>\n <input name=\"GridView1$ctl03$Name\" type=\"text\" value=\"heh2\" id=\"GridView1_ctl03_Name\" />\n <input type=\"button\" name=\"GridView1$ctl03$b1\" value=\"upd\" onclick=\"javascript:__doPostBack('GridView1$ctl03$b1','')\" id=\"GridView1_ctl03_b1\" />\n </td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
2898 HtmlDiff.AssertAreEqual (original, pageHTML, "GridViewUpdate #2");
2900 fr = new FormRequest (t.Response, "form1");
2901 fr.Controls.Add ("__EVENTTARGET");
2902 fr.Controls.Add ("__EVENTARGUMENT");
2903 fr.Controls.Add ("GridView1$ctl02$Name");
2904 fr.Controls.Add ("GridView1$ctl03$Name");
2905 fr.Controls ["__EVENTTARGET"].Value = "GridView1$ctl03$b1";
2906 fr.Controls ["__EVENTARGUMENT"].Value = "";
2907 fr.Controls ["GridView1$ctl02$Name"].Value = "ABC";
2908 fr.Controls ["GridView1$ctl03$Name"].Value = "123";
2910 t.Invoker = PageInvoker.CreateOnLoad (GridView_postback);
2911 pageHTML = HtmlDiff.GetControlFromPageHtml (t.Run ());
2913 original = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"GridView1\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\">ID</th><th scope=\"col\"> </th>\r\n\t\t</tr><tr>\r\n\t\t\t<td>1</td><td>\n <input name=\"GridView1$ctl02$Name\" type=\"text\" value=\"ABC\" id=\"GridView1_ctl02_Name\" />\n <input type=\"button\" name=\"GridView1$ctl02$b1\" value=\"upd\" onclick=\"javascript:__doPostBack('GridView1$ctl02$b1','')\" id=\"GridView1_ctl02_b1\" />\n </td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>2</td><td>\n <input name=\"GridView1$ctl03$Name\" type=\"text\" value=\"123\" id=\"GridView1_ctl03_Name\" />\n <input type=\"button\" name=\"GridView1$ctl03$b1\" value=\"upd\" onclick=\"javascript:__doPostBack('GridView1$ctl03$b1','')\" id=\"GridView1_ctl03_b1\" />\n </td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
2915 HtmlDiff.AssertAreEqual (original, pageHTML, "GridViewUpdate #3");
2919 [Category ("NunitWeb")]
2920 public void GridView_RequiresDataBinding ()
2922 PageDelegates delegates = new PageDelegates ();
2923 delegates.LoadComplete = GridView_RequiresDataBinding_LoadComplete;
2924 PageInvoker invoker = new PageInvoker (delegates);
2925 WebTest t = new WebTest (invoker);
2929 public static void GridView_RequiresDataBinding_LoadComplete (Page p)
2931 PokerGridView grid = new PokerGridView ();
2932 p.Form.Controls.Add (grid);
2934 grid.DataSource = new string [] { "A", "B", "C" };
2937 Assert.AreEqual (false, grid.GetRequiresDataBinding ());
2939 grid.EmptyDataTemplate = new CompiledTemplateBuilder (BuildTemplateMethod);
2940 Assert.AreEqual (false, grid.GetRequiresDataBinding (), "EmptyDataTemplate was set");
2942 grid.PagerTemplate = new CompiledTemplateBuilder (BuildTemplateMethod);
2943 Assert.AreEqual (false, grid.GetRequiresDataBinding (), "PagerTemplate was set");
2946 public static void BuildTemplateMethod (Control c)
2951 [Category ("NunitWeb")]
2952 public void GridView_Pager ()
2954 PageDelegates delegates = new PageDelegates ();
2955 delegates.Load = GridView_Pager_Load;
2956 PageInvoker invoker = new PageInvoker (delegates);
2957 WebTest t = new WebTest (invoker);
2958 string html = t.Run ();
2961 public static void GridView_Pager_Load (Page p)
2963 // TopAndBottom, PageCount = 1
2964 PokerGridView grid = new PokerGridView ();
2965 grid.PagerSettings.Position = PagerPosition.TopAndBottom;
2966 grid.AllowPaging = true;
2967 p.Form.Controls.Add (grid);
2969 grid.DataSource = new string [] { "A", "B", "C" };
2972 Assert.AreEqual (1, grid.PageCount, "#1#PageCount");
2974 Assert.IsNotNull (grid.TopPagerRow, "#1#TopPagerRow");
2975 Assert.AreEqual (false, grid.TopPagerRow.Visible, "#1#TopPagerRow.Visible");
2977 Assert.IsNotNull (grid.BottomPagerRow, "#1#BottomPagerRow");
2978 Assert.AreEqual (false, grid.BottomPagerRow.Visible, "#1#BottomPagerRow.Visible");
2980 // Top, PageCount = 1
2981 grid = new PokerGridView ();
2982 grid.PagerSettings.Position = PagerPosition.Top;
2983 grid.AllowPaging = true;
2984 p.Form.Controls.Add (grid);
2986 grid.DataSource = new string [] { "A", "B", "C" };
2989 Assert.AreEqual (1, grid.PageCount, "#2#PageCount");
2991 Assert.IsNotNull (grid.TopPagerRow, "#2#TopPagerRow");
2992 Assert.AreEqual (false, grid.TopPagerRow.Visible, "#2#TopPagerRow.Visible");
2994 Assert.IsNull (grid.BottomPagerRow, "#2#BottomPagerRow");
2996 // Bottom, PageCount = 1
2997 grid = new PokerGridView ();
2998 grid.PagerSettings.Position = PagerPosition.Bottom;
2999 grid.AllowPaging = true;
3000 p.Form.Controls.Add (grid);
3002 grid.DataSource = new string [] { "A", "B", "C" };
3005 Assert.AreEqual (1, grid.PageCount, "#3#PageCount");
3007 Assert.IsNull (grid.TopPagerRow, "#3#TopPagerRow");
3009 Assert.IsNotNull (grid.BottomPagerRow, "#3#BottomPagerRow");
3010 Assert.AreEqual (false, grid.BottomPagerRow.Visible, "#3#BottomPagerRow.Visible");
3012 // PagerSettings.Visible = false, PageCount = 2
3013 grid = new PokerGridView ();
3014 grid.PagerSettings.Position = PagerPosition.TopAndBottom;
3015 grid.PagerSettings.Visible = false;
3016 grid.AllowPaging = true;
3018 p.Form.Controls.Add (grid);
3020 grid.DataSource = new string [] { "A", "B", "C" };
3023 Assert.AreEqual (2, grid.PageCount, "#3#PageCount");
3025 Assert.IsNull (grid.TopPagerRow, "#3#TopPagerRow");
3026 Assert.IsNull (grid.BottomPagerRow, "#3#BottomPagerRow");
3029 [TestFixtureTearDown]
3030 public void TearDown()
3035 public static DataTable CreateDataSource ()
3037 DataTable aTable = new DataTable ("A");
3040 // Create ID column and add to the DataTable.
3041 dtCol = new DataColumn ();
3042 dtCol.DataType = Type.GetType ("System.Boolean");
3043 dtCol.ColumnName = BOOLFIELD;
3044 dtCol.Caption = BOOLFIELD;
3045 dtCol.ReadOnly = true;
3047 // Add the column to the DataColumnCollection.
3048 aTable.Columns.Add (dtCol);
3050 dtCol = new DataColumn ();
3051 dtCol.DataType = Type.GetType ("System.String");
3052 dtCol.ColumnName = STRINGFIELD;
3053 dtCol.Caption = STRINGFIELD;
3054 dtCol.ReadOnly = true;
3056 // Add the column to the DataColumnCollection.
3057 aTable.Columns.Add (dtCol);
3059 // Create 2 rows to the table
3060 dtRow = aTable.NewRow ();
3061 dtRow[BOOLFIELD] = true;
3062 dtRow[STRINGFIELD] = "1";
3063 aTable.Rows.Add (dtRow);
3065 dtRow = aTable.NewRow ();
3066 dtRow[BOOLFIELD] = false;
3067 dtRow[STRINGFIELD] = "2";
3068 aTable.Rows.Add (dtRow);
3072 // A simple Template class to wrap an image.
3073 public class ImageTemplate : ITemplate
3075 private MyWebControl.Image myImage;
3076 public MyWebControl.Image MyImage
3087 public void InstantiateIn (Control container)
3089 container.Controls.Add (MyImage);
3094 public class DataObject
3096 public static DataTable ds = CreateDataTable ();
3097 public static DataTable Select ()
3102 public static void Reset ()
3104 ds = CreateDataTable ();
3107 public static DataTable Delete (string ID, string FName, string LName)
3109 DataRow dr = ds.Rows.Find (ID);
3111 ds.Rows.Remove (dr);
3115 public static DataTable Insert (string ID, string FName, string LName)
3117 DataRow dr = ds.NewRow ();
3119 dr["FName"] = FName;
3120 dr["LName"] = LName;
3125 public static DataTable Update (string ID, string FName, string LName)
3127 foreach (DataRow row in ds.Rows) {
3128 if (row["ID"].ToString () == ID) {
3129 row["FName"] = FName;
3130 row["LName"] = LName;
3136 public static DataTable CreateDataTable ()
3138 DataTable aTable = new DataTable ("A");
3142 // Create ID column and add to the DataTable.
3143 dtCol = new DataColumn ();
3144 dtCol.DataType = Type.GetType ("System.Int32");
3145 dtCol.ColumnName = "ID";
3146 dtCol.AutoIncrement = true;
3147 dtCol.Caption = "ID";
3148 dtCol.ReadOnly = true;
3149 dtCol.Unique = true;
3150 aTable.Columns.Add (dtCol);
3152 // Create Name column and add to the table
3153 dtCol = new DataColumn ();
3154 dtCol.DataType = Type.GetType ("System.String");
3155 dtCol.ColumnName = "FName";
3156 dtCol.AutoIncrement = false;
3157 dtCol.Caption = "First Name";
3158 dtCol.ReadOnly = false;
3159 dtCol.Unique = false;
3160 aTable.Columns.Add (dtCol);
3162 // Create Last Name column and add to the table.
3163 dtCol = new DataColumn ();
3164 dtCol.DataType = Type.GetType ("System.String");
3165 dtCol.ColumnName = "LName";
3166 dtCol.AutoIncrement = false;
3167 dtCol.Caption = "Last Name";
3168 dtCol.ReadOnly = false;
3169 dtCol.Unique = false;
3170 aTable.Columns.Add (dtCol);
3172 // Create three rows to the table
3173 dtRow = aTable.NewRow ();
3175 dtRow["FName"] = "Mahesh";
3176 dtRow["LName"] = "Chand";
3177 aTable.Rows.Add (dtRow);
3179 aTable.PrimaryKey = new DataColumn[] { aTable.Columns["ID"] };
3184 public class DataObjects
3186 public static DataTable ds = CreateDataTable ();
3187 public static DataTable Select ()
3192 public static void Reset ()
3194 ds = CreateDataTable ();
3197 public static DataTable Delete (string ID, string FName, string LName)
3199 DataRow dr = ds.Rows.Find (ID);
3201 ds.Rows.Remove (dr);
3205 public static DataTable Insert (string ID, string FName, string LName)
3207 DataRow dr = ds.NewRow ();
3209 dr["FName"] = FName;
3210 dr["LName"] = LName;
3215 public static DataTable Update (string ID, string FName, string LName)
3217 foreach (DataRow row in ds.Rows) {
3218 if (row["ID"].ToString () == ID) {
3219 row["FName"] = FName;
3220 row["LName"] = LName;
3226 public static DataTable CreateDataTable ()
3228 DataTable aTable = new DataTable ("A");
3232 // Create ID column and add to the DataTable.
3233 dtCol = new DataColumn ();
3234 dtCol.DataType = Type.GetType ("System.Int32");
3235 dtCol.ColumnName = "ID";
3236 dtCol.AutoIncrement = true;
3237 dtCol.Caption = "ID";
3238 dtCol.ReadOnly = true;
3239 dtCol.Unique = true;
3240 aTable.Columns.Add (dtCol);
3242 // Create Name column and add to the table
3243 dtCol = new DataColumn ();
3244 dtCol.DataType = Type.GetType ("System.String");
3245 dtCol.ColumnName = "FName";
3246 dtCol.AutoIncrement = false;
3247 dtCol.Caption = "First Name";
3248 dtCol.ReadOnly = false;
3249 dtCol.Unique = false;
3250 aTable.Columns.Add (dtCol);
3252 // Create Last Name column and add to the table.
3253 dtCol = new DataColumn ();
3254 dtCol.DataType = Type.GetType ("System.String");
3255 dtCol.ColumnName = "LName";
3256 dtCol.AutoIncrement = false;
3257 dtCol.Caption = "Last Name";
3258 dtCol.ReadOnly = false;
3259 dtCol.Unique = false;
3260 aTable.Columns.Add (dtCol);
3262 // Create three rows to the table
3263 dtRow = aTable.NewRow ();
3265 dtRow["FName"] = "Mahesh";
3266 dtRow["LName"] = "Chand";
3267 aTable.Rows.Add (dtRow);
3269 dtRow = aTable.NewRow ();
3271 dtRow["FName"] = "Vadim";
3272 dtRow["LName"] = "Popik";
3273 aTable.Rows.Add (dtRow);
3275 aTable.PrimaryKey = new DataColumn[] { aTable.Columns["ID"] };