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
35 using NUnit.Framework;
38 using System.Globalization;
41 using System.Web.UI.WebControls;
42 using System.Collections;
43 using MonoTests.SystemWeb.Framework;
44 using MonoTests.stand_alone.WebHarness;
45 using MyWebControl = System.Web.UI.WebControls;
48 using System.Threading;
49 using System.Collections.Generic;
51 namespace MonoTests.System.Web.UI.WebControls
54 class PokerGridView : GridView
56 public bool ifPagerInitilized;
57 public bool dataPropertyChanged;
58 public bool pagePreLoad;
59 public bool controlHierarchy;
61 public PokerGridView ()
66 public object SaveState ()
68 return SaveViewState ();
71 public void LoadState (object o)
76 public StateBag StateBag
78 get { return base.ViewState; }
81 public HtmlTextWriterTag PTagKey
83 get { return base.TagKey;}
86 public string Render ()
88 StringWriter sw = new StringWriter ();
89 HtmlTextWriter tw = new HtmlTextWriter (sw);
91 return sw.ToString ();
94 public AutoGeneratedField DoCreateAutoGeneratedColumn (AutoGeneratedFieldProperties fieldProperties)
96 return base.CreateAutoGeneratedColumn (fieldProperties);
99 public int DoCreateChildControls (IEnumerable dataSource, bool dataBinding)
101 return base.CreateChildControls (dataSource, dataBinding);
104 public Table DoCreateChildTable ()
106 return base.CreateChildTable ();
109 public ICollection DoCreateColumns (PagedDataSource dataSource, bool useDataSource)
111 return base.CreateColumns (dataSource, useDataSource);
114 public Style DoCreateControlStyle ()
116 return base.CreateControlStyle ();
119 public DataSourceSelectArguments DoCreateDataSourceSelectArguments ()
121 return CreateDataSourceSelectArguments();
124 public DataSourceView DoGetData () {
128 public GridViewRow doCreateRow (int rowIndex, int dataSourceIndex, DataControlRowType rowType, DataControlRowState rowState)
130 return base.CreateRow (rowIndex, dataSourceIndex, rowType, rowState);
133 public string doGetCallbackResult ()
135 return base.GetCallbackResult ();
138 public string doGetCallbackScript (IButtonControl buttonControl, string argument)
140 return base.GetCallbackScript (buttonControl, argument);
143 protected override void InitializePager (GridViewRow row, int columnSpan, PagedDataSource pagedDataSource)
145 base.InitializePager (row, columnSpan, pagedDataSource);
146 ifPagerInitilized = true;
149 protected override void InitializeRow (GridViewRow row, DataControlField[] fields)
151 base.InitializeRow (row, fields);
154 public bool DoOnBubbleEvent (object source, EventArgs e)
156 return base.OnBubbleEvent (source, e);
159 public void DoOnDataBinding (EventArgs e)
161 base.OnDataBinding (e);
164 public void DoOnDataBound (EventArgs e)
166 base.OnDataBound (e);
169 protected override void OnDataPropertyChanged ()
171 base.OnDataPropertyChanged ();
172 dataPropertyChanged = true;
175 public void DoOnDataSourceViewChanged (object sender, EventArgs e)
177 base.OnDataSourceViewChanged (sender, e);
180 public void DoOnInit (EventArgs e)
185 public void DoOnLoad (EventArgs e)
190 public void DoOnPageIndexChanged (EventArgs e)
192 base.OnPageIndexChanged (e);
195 public void DoOnPageIndexChanging (GridViewPageEventArgs e)
197 base.OnPageIndexChanging (e);
200 protected override void OnPagePreLoad (object sender, EventArgs e)
202 base.OnPagePreLoad (sender, e);
206 public void DoOnPreRender (EventArgs e)
208 base.OnPreRender (e);
211 public void DoOnRowCancelingEdit (GridViewCancelEditEventArgs e)
213 base.OnRowCancelingEdit (e);
216 public void DoOnRowCommand (GridViewCommandEventArgs e)
218 base.OnRowCommand (e);
221 public void DoOnRowCreated (GridViewRowEventArgs e)
223 base.OnRowCreated (e);
226 public void DoOnRowDataBound (GridViewRowEventArgs e)
228 base.OnRowDataBound (e);
231 public void DoOnRowDeleted (GridViewDeletedEventArgs e)
233 base.OnRowDeleted (e);
236 public void DoOnRowDeleting (GridViewDeleteEventArgs e)
238 base.OnRowDeleting (e);
241 public void DoOnRowEditing (GridViewEditEventArgs e)
243 base.OnRowEditing (e);
246 public void DoOnRowUpdated (GridViewUpdatedEventArgs e)
248 base.OnRowUpdated (e);
251 public void DoOnRowUpdating (GridViewUpdateEventArgs e)
253 base.OnRowUpdating (e);
256 public void DoOnSelectedIndexChanged (EventArgs e)
258 base.OnSelectedIndexChanged (e);
261 public void DoOnSelectedIndexChanging (GridViewSelectEventArgs e)
263 base.OnSelectedIndexChanging (e);
266 public void DoOnSorted (EventArgs e)
271 public void DoOnSorting (GridViewSortEventArgs e)
276 public void DoOnUnload (EventArgs e)
281 public void DoPerformDataBinding (IEnumerable data)
283 base.PerformDataBinding (data);
286 protected override void PrepareControlHierarchy ()
288 base.PrepareControlHierarchy ();
289 controlHierarchy = true;
292 public object DoSaveControlState ()
294 return base.SaveControlState ();
297 public void DoLoadControlState (object savedState)
299 base.LoadControlState (savedState);
302 public void SetRequiresDataBinding (bool value)
304 RequiresDataBinding = value;
310 public class GridViewTest
312 public class DataSourceObject
314 public static List<string> GetList (string sortExpression, int startRowIndex, int maximumRows) {
318 public static List<string> GetList (int startRowIndex, int maximumRows) {
322 public static List<string> GetList (string sortExpression) {
326 public static List<string> GetList () {
327 List<string> list = new List<string> ();
337 public static int GetCount () {
338 return GetList ().Count;
344 private static ArrayList _data = new ArrayList ();
347 _data.Add (new DataItem (1, "heh1"));
348 _data.Add (new DataItem (2, "heh2"));
354 public ArrayList GetAllItems () {
358 public void UpdateItem (int id, string name) {
359 foreach (DataItem i in _data) {
368 public class DataItem
373 public DataItem (int id, string name) {
383 get { return _name; }
384 set { _name = value; }
388 public const string BOOLFIELD = "bool";
389 public const string STRINGFIELD = "str";
390 ArrayList myds = new ArrayList ();
391 public bool InitilizePager;
394 public void GridViewInit ()
403 WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.GridViewUpdate.aspx", "GridViewUpdate.aspx");
405 WebTest.CopyResource (GetType (), "GridViewUpdate.aspx", "GridViewUpdate.aspx");
410 public void GridView_DefaultProperties ()
412 PokerGridView g = new PokerGridView ();
413 Assert.AreEqual (0, g.StateBag.Count, "ViewState.Count");
414 Assert.AreEqual (false, g.AllowPaging, "AllowPaging");
415 Assert.AreEqual (false, g.AllowSorting, "AllowSorting");
416 // The AlternatingRowStyle property is tested by the TableItemStyle test (already exists)
417 Assert.AreEqual (true, g.AutoGenerateColumns, "AutoGenerateColumns");
418 Assert.AreEqual (false, g.AutoGenerateDeleteButton, "AutoGenerateDeleteButton");
419 Assert.AreEqual (false, g.AutoGenerateEditButton, "AutoGenerateEditButton");
420 Assert.AreEqual (false, g.AutoGenerateSelectButton, "AutoGenerateSelectButton");
421 Assert.AreEqual ("", g.BackImageUrl, "BackImageUrl");
422 Assert.AreEqual (null, g.BottomPagerRow, "BottomPagerRow");
423 Assert.AreEqual ("", g.Caption, "Caption");
424 Assert.AreEqual (TableCaptionAlign.NotSet, g.CaptionAlign, "CaptionAlign");
425 Assert.AreEqual (-1, g.CellPadding, "CellPadding");
426 Assert.AreEqual (0, g.CellSpacing, "CellSpacing");
427 // ToDo: The Columns property default value is tested by the DataControlFieldCollection and DataControlField tests
428 Assert.AreEqual (0, g.DataKeyNames.Length, "DataKeyNames");
429 // ToDo: The DataKeys property default value is tested by the DataKeyArray and DataKey tests
430 Assert.AreEqual (-1, g.EditIndex, "EditIndex");
431 // The EditRowStyle property is tested by the TableItemStyle test (already exists)
432 // The EmptyDataRowStyle property is tested by the TableItemStyle test (already exists)
433 Assert.AreEqual (null, g.EmptyDataTemplate, "EmptyDataTemplate");
434 Assert.AreEqual ("", g.EmptyDataText, "EmptyDataText");
435 Assert.AreEqual (false, g.EnableSortingAndPagingCallbacks, "EnableSortingAndPagingCallbacks");
437 // The FooterStyle property is tested by the TableItemStyle test (already exists)
438 Assert.AreEqual (GridLines.Both, g.GridLines, "GridLines");
439 // The HeaderStyle property is tested by the TableItemStyle test (already exists)
440 Assert.AreEqual (HorizontalAlign.NotSet, g.HorizontalAlign, "HorizontalAlign");
442 Assert.AreEqual (0, g.PageIndex, "PageIndex");
443 // ToDo: The PagerSettings property is tested by the PagerSettings test
444 // The PagerStyle property is tested by the TableItemStyle test (already exists)
445 Assert.AreEqual (null, g.PagerTemplate, "PagerTemplate");
446 Assert.AreEqual (10, g.PageSize, "PageSize");
447 Assert.AreEqual ("", g.RowHeaderColumn, "RowHeaderColumn");
448 // ToDo: The Rows property is tested by the GridViewRowCollection and GridViewRow test
449 // The RowStyle property is tested by the TableItemStyle test (already exists)
450 Assert.AreEqual (false, g.ShowFooter, "ShowFooter");
451 Assert.AreEqual (true, g.ShowHeader, "ShowHeader");
452 Assert.AreEqual (SortDirection.Ascending, g.SortDirection, "SortDirection");
453 Assert.AreEqual (null, g.TopPagerRow, "TopPagerRow");
454 Assert.AreEqual (true, g.UseAccessibleHeader, "UseAccessibleHeader");
459 public void GridView_DefaultPropertiesNotWorking ()
461 PokerGridView g = new PokerGridView ();
462 Assert.AreEqual (null, g.FooterRow, "FooterRow");
463 Assert.AreEqual (null, g.HeaderRow, "HeaderRow");
464 Assert.AreEqual (true, g.Visible, "ViewVisible");
465 Assert.AreEqual (0, g.PageCount, "PageCount");
466 Assert.AreEqual ("", g.SortExpression, "SortExpression");
471 public void GridView_AssignedProperties ()
473 PokerGridView g = new PokerGridView ();
474 Assert.AreEqual (0, g.StateBag.Count, "ViewState.Count");
475 g.AllowPaging = true;
476 Assert.AreEqual (true, g.AllowPaging, "AllowPaging");
477 g.AllowSorting = true;
478 Assert.AreEqual (true, g.AllowSorting, "AllowSorting");
479 g.AutoGenerateColumns = false;
480 Assert.AreEqual (false, g.AutoGenerateColumns, "AutoGenerateColumns");
481 g.AutoGenerateDeleteButton = true;
482 Assert.AreEqual (true, g.AutoGenerateDeleteButton, "AutoGenerateDeleteButton");
483 g.AutoGenerateEditButton = true;
484 Assert.AreEqual (true, g.AutoGenerateEditButton, "AutoGenerateEditButton");
485 g.AutoGenerateSelectButton = true;
486 Assert.AreEqual (true, g.AutoGenerateSelectButton, "AutoGenerateSelectButton");
487 g.BackImageUrl = "test";
488 Assert.AreEqual ("test", g.BackImageUrl, "BackImageUrl");
490 Assert.AreEqual ("test", g.Caption, "Caption");
491 g.CaptionAlign = TableCaptionAlign.Left;
492 Assert.AreEqual (TableCaptionAlign.Left, g.CaptionAlign, "CaptionAlign");
494 Assert.AreEqual (0, g.CellPadding, "CellPadding");
496 Assert.AreEqual (1, g.CellSpacing, "CellSpacing");
497 // ToDo: The Columns property default value is tested by the DataControlFieldCollection and DataControlField tests
498 string[] str = new String[1];
500 g.DataKeyNames = str;
501 Assert.AreEqual ("test", g.DataKeyNames[0], "DataKeyNames");
503 // ToDo: The DataKeys property default value is tested by the DataKeyArray and DataKey tests
505 Assert.AreEqual (0, g.EditIndex, "EditIndex");
506 // The EditRowStyle property default value is tested by the TableItemStyle test (already exists)
507 // The EmptyDataRowStyle property default value is tested by the TableItemStyle test (already exists)
509 MyWebControl.Image myImage = new MyWebControl.Image ();
510 myImage.ImageUrl = "myimage.jpg";
511 ImageTemplate template = new ImageTemplate ();
512 template.MyImage = myImage;
513 // end create template image
515 g.EmptyDataTemplate = template;
516 Assert.IsNotNull (g.EmptyDataTemplate, "EmptyDataTemplate");
517 g.EmptyDataText = "test";
518 Assert.AreEqual ("test", g.EmptyDataText, "EmptyDataText");
520 g.EnableSortingAndPagingCallbacks = true;
521 Assert.AreEqual (true, g.EnableSortingAndPagingCallbacks, "EnableSortingAndPagingCallbacks");
523 // The FooterStyle property default value is tested by the TableItemStyle test (already exists)
524 g.GridLines = GridLines.Horizontal;
525 Assert.AreEqual (GridLines.Horizontal, g.GridLines, "GridLines");
527 g.HorizontalAlign = HorizontalAlign.Justify;
528 Assert.AreEqual (HorizontalAlign.Justify, g.HorizontalAlign, "HorizontalAlign");
531 Assert.AreEqual (1, g.PageIndex, "PageIndex");
532 // ToDo: The PagerSettings property default value is tested by the PagerSettings test
533 // The PagerStyle property default value is tested by the TableItemStyle test (already exists)
534 g.PagerTemplate = template;
535 Assert.IsNotNull (g.PagerTemplate, "PagerTemplate");
537 Assert.AreEqual (5, g.PageSize, "PageSize");
538 g.RowHeaderColumn = "test";
539 Assert.AreEqual ("test", g.RowHeaderColumn, "RowHeaderColumn");
540 // ToDo: The Rows property default value is tested by the GridViewRowCollection and GridViewRow test
541 // The RowStyle property default value is tested by the TableItemStyle test (already exists)
543 Assert.AreEqual (true, g.ShowFooter, "ShowFooter");
544 g.ShowHeader = false;
545 Assert.AreEqual (false, g.ShowHeader, "ShowHeader");
546 g.UseAccessibleHeader = false;
547 Assert.AreEqual (false, g.UseAccessibleHeader, "UseAccessibleHeader");
551 public void GridView_DefaultProtectedProperties ()
553 PokerGridView g = new PokerGridView ();
554 Assert.AreEqual (HtmlTextWriterTag.Table, g.PTagKey, "TagKey");
558 public void GridView_Sort_and_DataSourceSelectArguments () {
560 DataSourceSelectArguments arg;
561 Page p = new Page ();
563 PokerGridView g = new PokerGridView ();
564 g.Columns.Add (new BoundField ());
565 g.AllowSorting = true;
568 ObjectDataSource data = new ObjectDataSource ();
569 data.TypeName = typeof (DataSourceObject).AssemblyQualifiedName;
570 data.SelectMethod = "GetList";
571 data.SortParameterName = "sortExpression";
573 p.Controls.Add (data);
575 g.DataSourceID = "Data";
580 g.Sort ("sort", SortDirection.Descending);
582 Assert.AreEqual (-1, g.EditIndex, "EditIndex after Sort, Bound by DataSourceID");
583 Assert.AreEqual (0, g.PageIndex, "PageIndex after Sort, Bound by DataSourceID");
585 arg = g.DoCreateDataSourceSelectArguments();
586 view = g.DoGetData ();
587 Assert.IsTrue (view.CanSort);
588 Assert.AreEqual ("sort", g.SortExpression, "SortExpression, Bound by DataSourceID");
589 Assert.AreEqual (SortDirection.Descending, g.SortDirection, "SortDirection, Bound by DataSourceID");
590 Assert.AreEqual ("sort DESC", arg.SortExpression, "AllowSorting = true, Bound by DataSourceID");
592 g.AllowSorting = false;
593 arg = g.DoCreateDataSourceSelectArguments ();
594 Assert.AreEqual ("sort DESC", arg.SortExpression, "AllowSorting = false, Bound by DataSourceID");
599 public void GridView_PageCount ()
601 Page p = new Page ();
603 PokerGridView gv = new PokerGridView ();
605 gv.AllowPaging = true;
608 ObjectDataSource data = new ObjectDataSource ();
609 data.ID = "ObjectDataSource1";
610 data.TypeName = typeof (DataSourceObject).AssemblyQualifiedName;
611 data.SelectMethod = "GetList";
612 p.Controls.Add (data);
614 gv.DataSourceID = "ObjectDataSource1";
615 gv.SetRequiresDataBinding (true);
617 Assert.AreEqual (0, gv.PageCount, "PageCount before binding");
621 Assert.AreEqual (2, gv.PageCount, "PageCount after binding");
623 PokerGridView copy = new PokerGridView ();
624 copy.LoadState (gv.SaveState ());
626 Assert.AreEqual (2, copy.PageCount, "PageCount from ViewState");
630 public void GridView_DataKeys () {
631 Page p = new Page ();
633 PokerGridView gv = new PokerGridView ();
636 ObjectDataSource data = new ObjectDataSource ();
637 data.TypeName = typeof (DataObject).AssemblyQualifiedName;
638 data.SelectMethod = "Select";
639 p.Controls.Add (data);
641 gv.DataSource = data;
642 gv.DataKeyNames = new string [] { "ID", "FName" };
644 DataKeyArray keys1 = gv.DataKeys;
646 Assert.AreEqual (0, keys1.Count, "DataKeys count before binding");
650 DataKeyArray keys2 = gv.DataKeys;
651 DataKeyArray keys3 = gv.DataKeys;
653 Assert.IsFalse (Object.ReferenceEquals (keys1, keys2), "DataKey returns the same instans");
654 Assert.IsTrue (Object.ReferenceEquals (keys2, keys3), "DataKey returns the same instans");
656 Assert.AreEqual (1, keys1.Count, "DataKeys count after binding");
657 Assert.AreEqual (1001, keys1 [0].Value, "DataKey.Value after binding");
658 Assert.AreEqual (2, keys1 [0].Values.Count, "DataKey.Values count after binding");
659 Assert.AreEqual (1001, keys1 [0].Values [0], "DataKey.Values[0] after binding");
660 Assert.AreEqual ("Mahesh", keys1 [0].Values [1], "DataKey.Values[1] after binding");
662 PokerGridView copy = new PokerGridView ();
663 object state = gv.DoSaveControlState ();
664 copy.DoLoadControlState (state);
666 DataKeyArray keys4 = copy.DataKeys;
668 Assert.AreEqual (1, keys4.Count, "DataKeys count from ControlState");
669 Assert.AreEqual (1001, keys4 [0].Value, "DataKey.Value from ControlState");
670 Assert.AreEqual (2, keys4 [0].Values.Count, "DataKey.Values count from ControlState");
671 Assert.AreEqual (1001, keys4 [0].Values [0], "DataKey.Values[0] from ControlState");
672 Assert.AreEqual ("Mahesh", keys4 [0].Values [1], "DataKey.Values[1] from ControlState");
675 // MSDN: The CreateDataSourceSelectArguments method is a helper method called by
676 // the GridView control to create the DataSourceSelectArguments object that
677 // contains the arguments passed to the data source. In this implementation,
678 // the DataSourceSelectArguments object contains the arguments for paging operations.
680 public void GridView_CreateDataSourceSelectArguments () {
682 Page p = new Page ();
684 PokerGridView g = new PokerGridView ();
685 g.Sorting += new GridViewSortEventHandler (g_Sorting);
688 ObjectDataSource data = new ObjectDataSource ();
689 data.TypeName = typeof (DataSourceObject).AssemblyQualifiedName;
690 data.SelectMethod = "GetList";
691 data.SortParameterName = "sortExpression";
692 DataSourceSelectArguments arg;
693 p.Controls.Add (data);
698 arg = g.DoCreateDataSourceSelectArguments ();
699 Assert.IsTrue (arg.Equals (DataSourceSelectArguments.Empty), "Default");
701 g.AllowPaging = true;
704 arg = g.DoCreateDataSourceSelectArguments ();
705 view = g.DoGetData ();
706 Assert.IsFalse (view.CanPage);
707 Assert.IsTrue (view.CanRetrieveTotalRowCount);
708 Assert.IsTrue (arg.Equals (DataSourceSelectArguments.Empty), "AllowPaging = true, CanPage = false, CanRetrieveTotalRowCount = true");
710 // make DataSourceView.CanPage = true
711 data.EnablePaging = true;
713 arg = g.DoCreateDataSourceSelectArguments ();
714 view = g.DoGetData ();
715 Assert.IsTrue (view.CanPage);
716 Assert.IsFalse (view.CanRetrieveTotalRowCount);
717 Assert.IsTrue (arg.Equals (new DataSourceSelectArguments (6, -1)), "AllowPaging = true, CanPage = true, CanRetrieveTotalRowCount = false");
719 g.AllowPaging = false;
720 arg = g.DoCreateDataSourceSelectArguments ();
721 Assert.IsTrue (arg.Equals (DataSourceSelectArguments.Empty), "AllowPaging = false, CanPage = true, CanRetrieveTotalRowCount = false");
723 // make DataSourceView.CanRetrieveTotalRowCount = true
724 data.SelectCountMethod = "GetCount";
726 arg = g.DoCreateDataSourceSelectArguments ();
727 Assert.IsTrue (arg.Equals (DataSourceSelectArguments.Empty), "AllowPaging = false, CanPage = true, CanRetrieveTotalRowCount = true");
729 g.AllowPaging = true;
730 arg = g.DoCreateDataSourceSelectArguments ();
731 DataSourceSelectArguments arg1 = new DataSourceSelectArguments (6, 3);
732 arg1.RetrieveTotalRowCount = true;
733 view = g.DoGetData ();
734 Assert.IsTrue (view.CanPage);
735 Assert.IsTrue (view.CanRetrieveTotalRowCount);
736 Assert.IsTrue (arg.Equals (arg1), "AllowPaging = true, CanPage = true, CanRetrieveTotalRowCount = true");
738 g.AllowPaging = false;
739 g.AllowSorting = true;
742 g.Sort ("sort", SortDirection.Descending);
744 Assert.AreEqual (2, g.EditIndex, "EditIndex after Sort, Bound by DataSource");
745 Assert.AreEqual (1, g.PageIndex, "PageIndex after Sort, Bound by DataSource");
747 arg = g.DoCreateDataSourceSelectArguments ();
748 view = g.DoGetData ();
749 Assert.IsTrue (view.CanSort);
750 Assert.AreEqual (String.Empty, g.SortExpression, "SortExpression, Bound by DataSource");
751 Assert.AreEqual (SortDirection.Ascending, g.SortDirection, "SortDirection, Bound by DataSource");
752 Assert.IsTrue (arg.Equals (DataSourceSelectArguments.Empty), "AllowSorting = true, Bound by DataSource");
756 static void g_Sorting (object sender, GridViewSortEventArgs e) {
757 Assert.AreEqual ("sort", e.SortExpression, "GridViewSortEventArgs.SortExpression");
758 Assert.AreEqual (SortDirection.Descending, e.SortDirection, "GridViewSortEventArgs.SortDirection");
762 public void GridView_DataBind()
764 PokerGridView g = new PokerGridView ();
767 Assert.AreEqual (6, g.Rows.Count, "DataBind");
771 Assert.AreEqual (0, g.Rows.Count, "DataBind");
775 public void GridView_DataBind_NoDataSource () {
776 PokerGridView g = new PokerGridView ();
778 Assert.AreEqual (0, g.Rows.Count, "GridView_DataBind_NoDataSource");
781 bool rowcreatedchecker;
782 bool deleteitemchecker;
787 public void GridView_DeleteItem ()
789 PokerGridView g = new PokerGridView ();
790 ArrayList myds = new ArrayList ();
798 Assert.AreEqual (false, deleteitemchecker, "DeleteItem#1");
799 g.RowDeleting += new GridViewDeleteEventHandler (RowDeletingHandler);
801 Assert.AreEqual (true, deleteitemchecker, "DeleteItem#2");
804 protected void RowDeletingHandler (object sender, GridViewDeleteEventArgs e)
806 deleteitemchecker = true;
810 public void GridView_RowCreated ()
812 GridView g = new GridView ();
813 ButtonField field = new ButtonField ();
814 field.ButtonType = ButtonType.Link;
815 field.Text = "Click";
816 field.CommandName = "CMD";
817 g.Columns.Add (field);
818 g.RowCreated += new GridViewRowEventHandler (RowCreatedHandler);
820 Assert.AreEqual (false, rowcreatedchecker, "RowCreated#1");
822 ArrayList myds = new ArrayList ();
830 Assert.AreEqual (true, rowcreatedchecker, "RowCreated#2");
833 protected void RowCreatedHandler (object sender, GridViewRowEventArgs e)
835 if (e.Row.Cells.Count > 0)
836 rowcreatedchecker = true;
838 // Example from MSDN: GridView.RowCreated Event
840 // The GridViewCommandEventArgs class does not contain a
841 // property that indicates which row's command button was
842 // clicked. To identify which row's button was clicked, use
843 // the button's CommandArgument property by setting it to the
845 if (e.Row.RowType == DataControlRowType.DataRow) {
846 // Retrieve the LinkButton control from the first column.
847 IButtonControl addButton = (IButtonControl) e.Row.Cells [0].Controls [0];
849 // Set the LinkButton's CommandArgument property with the
851 addButton.CommandArgument = e.Row.RowIndex.ToString ();
856 public void GridView_Sort ()
858 PokerGridView g = new PokerGridView ();
859 Assert.AreEqual (false, sortingaction, "BeforeSorting");
860 g.Sorting += new GridViewSortEventHandler (Gridview_sorting);
861 g.Sort("Item",SortDirection.Descending);
862 Assert.AreEqual (true, sortingaction, "AfterSorting");
865 protected void Gridview_sorting (object sender, GridViewSortEventArgs e)
867 sortingaction = true;
871 public void GridView_IsBindableType ()
\r
873 Type [] types = new Type [] {
\r
892 GridView g = new GridView ();
\r
893 foreach (Type type in types)
\r
894 Assert.AreEqual (true, g.IsBindableType (type), type.ToString ());
\r
896 Assert.AreEqual (false, g.IsBindableType (typeof (Enum)), "test");
\r
897 Assert.AreEqual (false, g.IsBindableType (typeof (Object)), "test");
\r
901 public void GridView_CreateAutoGeneratedColumn ()
903 PokerGridView g = new PokerGridView ();
904 AutoGeneratedFieldProperties fp = new AutoGeneratedFieldProperties();
905 fp.Name = "testfield";
906 fp.Type = typeof (string);
907 AutoGeneratedField gf = g.DoCreateAutoGeneratedColumn (fp);
908 Assert.AreEqual (typeof (string), gf.DataType , "AutoGeneratedColumn#1");
909 Assert.AreEqual ("testfield", gf.HeaderText, "AutoGeneratedColumn#2");
910 Assert.AreEqual ("System.Web.UI.WebControls.AutoGeneratedField", gf.GetType ().ToString (), "AutoGeneratedColumn#3");
914 public void GridView_CreateChildControls ()
916 PokerGridView g = new PokerGridView ();
917 g.Page = new Page ();
920 Assert.AreEqual(6,g.DoCreateChildControls(myds,true),"CreateChildControls#1");
922 g.AllowPaging = true;
925 Assert.AreEqual (6, g.DoCreateChildControls (myds, true), "CreateChildControls#1");
928 class MyEnumSource : IEnumerable
932 public MyEnumSource (int count)
937 #region IEnumerable Members
939 public IEnumerator GetEnumerator () {
941 for (int i = 0; i < _count; i++)
949 public void GridView_CreateChildControls_2 () {
950 PokerGridView g = new PokerGridView ();
951 g.AutoGenerateColumns = false;
952 g.AutoGenerateSelectButton = true;
953 g.EmptyDataText = "empty";
954 g.Page = new Page ();
955 g.DataSource = new MyEnumSource (20);
957 //Assert.AreEqual (20, g.DoCreateChildControls (new MyEnumSource (20), true), "CreateChildControls#1");
958 Assert.AreEqual (0, g.DoCreateChildControls (new MyEnumSource (0), true), "CreateChildControls#2");
962 public void GridView_CreateChildControls_1 ()
964 PokerGridView g = new PokerGridView ();
965 g.AutoGenerateSelectButton = true;
966 g.EmptyDataText = "empty";
967 Assert.AreEqual (0, g.DoCreateChildControls (new object [0], false), "CreateChildControls#2");
968 Assert.AreEqual (-1, g.DoCreateChildControls (new object [5], false), "CreateChildControls#3");
972 public void GridView_NullDS ()
974 PokerGridView g = new PokerGridView ();
977 Assert.AreEqual (0, g.Rows.Count, "NullDS");
981 public void GridView_CreateChildTable () {
982 PokerGridView g = new PokerGridView ();
983 g.ID = "PokerGridView";
984 g.Caption = "Caption";
985 g.CaptionAlign = TableCaptionAlign.Right;
988 Table t = g.DoCreateChildTable ();
989 Assert.IsNotNull (t, "CreateChildTable#1");
990 Assert.AreEqual (false, t.ControlStyleCreated, "CreateChildTable#2");
994 public void GridView_CreateControlStyle ()
996 PokerGridView g = new PokerGridView ();
997 g.BorderColor = Color.Red;
998 g.BorderStyle = BorderStyle.Dashed;
999 Style s = g.DoCreateControlStyle ();
1000 Assert.AreEqual (typeof(TableStyle), s.GetType(), "CreateControlStyle#1");
1001 Assert.AreEqual (((TableStyle) s).GridLines, GridLines.Both, "CreateControlStyle#2");
1002 Assert.AreEqual (((TableStyle) s).CellSpacing, 0, "CreateControlStyle#3");
1006 public void GridView_CreateRow ()
1008 PokerGridView g = new PokerGridView ();
1009 GridViewRow gr = g.doCreateRow(0, 0, DataControlRowType.Pager, DataControlRowState.Normal);
1010 Assert.AreEqual (0, gr.RowIndex, "CreateRow#1");
1011 Assert.AreEqual (0, gr.DataItemIndex, "CreateRow#2");
1012 Assert.AreEqual (DataControlRowType.Pager, gr.RowType, "CreateRow#3");
1013 Assert.AreEqual (DataControlRowState.Normal, gr.RowState, "CreateRow#4");
1017 public void GridView_GetCallbackResult()
1019 Page page = new Page ();
1020 PokerGridView g = new PokerGridView ();
1021 page.Controls.Add (g);
1022 string s = g.doGetCallbackResult ();
1023 if (s == null || s == string.Empty) {
1024 Assert.Fail ("GetCallbackResult");
1029 public void GridView_InitializePager ()
1031 PokerGridView gv = new PokerGridView ();
1032 Page page = new Page ();
1033 page.Controls.Add (gv);
1034 gv.AllowPaging = true;
1036 gv.DataSource = myds;
1037 Assert.AreEqual (false, gv.ifPagerInitilized, "BeforeInitializePagerRunned");
1038 Assert.AreEqual (0, gv.PageCount, "BeforeInitializePagerPageCount");
1040 Assert.AreEqual (true, gv.ifPagerInitilized, "AfterInitializePagerRunned");
1041 Assert.AreEqual (3, gv.PageCount, "AfterInitializePagerPageCount");
1045 public void GridView_InitializeRow ()
1047 // not implemented yet
1051 public void GridView_ViewState ()
1053 PokerGridView gv = new PokerGridView ();
1054 PokerGridView copy = new PokerGridView ();
1055 gv.AllowPaging = true;
1056 gv.AllowSorting = true;
1057 gv.BackColor = Color.Red;
1058 object state = gv.SaveState ();
1059 copy.LoadState (state);
1060 Assert.AreEqual (true, copy.AllowPaging, "ViewStateAllowPaging");
1061 Assert.AreEqual (true, copy.AllowSorting, "ViewStateAllowSorting");
1062 Assert.AreEqual (Color.Red, copy.BackColor, "ViewStateBackColor");
1065 // Private variables for bubble events
1066 private bool bubbledeleterow;
1067 private bool bubbleupdaterow;
1068 private bool bubbleeditingrow;
1069 private bool bubblesortint;
1070 private bool bubblecanceling;
1071 private bool bubbleselect;
1072 private bool bubblepage;
1073 private int newPageIndex;
1076 public void GridView_BubbleEvent ()
1078 PokerGridView gv = new PokerGridView ();
1079 Page page = new Page ();
1080 LinkButton lb = new LinkButton ();
1081 gv.AllowPaging = true;
1082 page.Controls.Add (gv);
1083 gv.DataSource = myds;
1087 gv.RowDeleting += new GridViewDeleteEventHandler (gv_RowDeleting);
1088 gv.RowUpdating += new GridViewUpdateEventHandler (gv_RowUpdating);
1089 gv.RowEditing += new GridViewEditEventHandler (gv_RowEditing);
1090 gv.Sorting += new GridViewSortEventHandler (gv_Sorting);
1091 gv.RowCancelingEdit += new GridViewCancelEditEventHandler (gv_RowCancelingEdit);
1092 gv.SelectedIndexChanging+=new GridViewSelectEventHandler(gv_SelectedIndexChanging);
1093 gv.PageIndexChanging+=new GridViewPageEventHandler(gv_PageIndexChanging);
1095 GridViewCommandEventArgs com1 = new GridViewCommandEventArgs (lb, new CommandEventArgs ("Delete", "0"));
1096 Assert.AreEqual (false, bubbledeleterow, "BeforeBubbleEventDeleteRow");
1097 gv.DoOnBubbleEvent (gv, com1);
1098 Assert.AreEqual (true, bubbledeleterow, "AfterBubbleEventDeleteRow");
1100 GridViewCommandEventArgs com2 = new GridViewCommandEventArgs (lb, new CommandEventArgs ("Update", "0"));
1101 Assert.AreEqual (false, bubbleupdaterow, "BeforeBubbleEventUpdateRow");
1102 gv.DoOnBubbleEvent (gv, com2);
1103 Assert.AreEqual (true, bubbleupdaterow, "AfterBubbleEventUpdateRow");
1105 GridViewCommandEventArgs com3 = new GridViewCommandEventArgs (lb, new CommandEventArgs ("Edit", "0"));
1106 Assert.AreEqual (false, bubbleeditingrow, "BeforeBubbleEventEditingRow");
1107 gv.DoOnBubbleEvent (gv, com3);
1108 Assert.AreEqual (true, bubbleeditingrow, "AfterBubbleEventEditingRow");
1110 gv.AllowSorting = true;
1111 GridViewCommandEventArgs com4 = new GridViewCommandEventArgs (lb, new CommandEventArgs ("Sort", null));
1112 Assert.AreEqual (false, bubblesortint, "BeforeBubbleEventSortingRow");
1113 gv.DoOnBubbleEvent (gv, com4);
1114 Assert.AreEqual (true, bubblesortint, "AfterBubbleEventSortingRow");
1116 GridViewCommandEventArgs com5 = new GridViewCommandEventArgs (lb, new CommandEventArgs ("Cancel", null));
1117 Assert.AreEqual (false, bubblecanceling, "BeforeBubbleEventcancelingEdit");
1118 gv.DoOnBubbleEvent (gv, com5);
1119 Assert.AreEqual (true, bubblecanceling, "AfterBubbleEventcancelingEdit");
1121 GridViewCommandEventArgs com6 = new GridViewCommandEventArgs (gv.SelectedRow, lb, new CommandEventArgs ("Select", "2"));
1122 Assert.AreEqual (false, bubbleselect, "BeforeBubbleEventSelect");
1123 gv.DoOnBubbleEvent (gv, com6);
1124 Assert.AreEqual (true, bubbleselect, "AfterBubbleEventSelect");
1126 GridViewCommandEventArgs com7 = new GridViewCommandEventArgs (lb, new CommandEventArgs ("Page", "Next"));
1127 Assert.AreEqual (false, bubblepage, "BeforeBubbleEventNextPage");
1128 gv.DoOnBubbleEvent (gv, com7);
1129 Assert.AreEqual (true, bubblepage, "AfterBubbleEventNextPage");
1130 Assert.AreEqual (1, newPageIndex, "NextPage");
1133 GridViewCommandEventArgs com8 = new GridViewCommandEventArgs (lb, new CommandEventArgs ("Page", "Prev"));
1134 Assert.AreEqual (false, bubblepage, "BeforeBubbleEventPrevPage");
1135 gv.DoOnBubbleEvent (gv, com8);
1136 Assert.AreEqual (true, bubblepage, "AfterBubbleEventPrevPage");
1137 Assert.AreEqual (-1, newPageIndex, "PrevPage");
1139 GridViewCommandEventArgs com9 = new GridViewCommandEventArgs (lb, new CommandEventArgs ("Page", "Last"));
1140 Assert.AreEqual (false, bubblepage, "BeforeBubbleEventLastPage");
1141 gv.DoOnBubbleEvent (gv, com9);
1142 Assert.AreEqual (true, bubblepage, "AfterBubbleEventLastPage");
1144 GridViewCommandEventArgs com10 = new GridViewCommandEventArgs (lb, new CommandEventArgs ("Page", "First"));
1145 Assert.AreEqual (false, bubblepage, "BeforeBubbleEventFirstPage");
1146 gv.DoOnBubbleEvent (gv, com10);
1147 Assert.AreEqual (true, bubblepage, "AfterBubbleEventFirstPage");
1148 Assert.AreEqual (0, newPageIndex, "FirstPage");
1151 private void gv_RowDeleting (object sender, EventArgs e)
1153 bubbledeleterow = true;
1157 private void gv_RowUpdating (object sender, EventArgs e)
1159 bubbleupdaterow = true;
1163 private void gv_RowEditing (object sender, EventArgs e)
1165 bubbleeditingrow = true;
1169 private void gv_Sorting (object sender, EventArgs e)
1171 bubblesortint = true;
1175 private void gv_RowCancelingEdit (object sender, EventArgs e)
1177 bubblecanceling = true;
1178 gridViewCancelEdit = true;
1181 private void gv_SelectedIndexChanging (object sender, GridViewSelectEventArgs e)
1183 bubbleselect = true;
1184 selectIndexChanging = true;
1185 Assert.AreEqual (2, e.NewSelectedIndex, "SelectedIndexChanging");
1188 private void gv_PageIndexChanging (object sender, GridViewPageEventArgs e)
1191 pageIndexChanging = true;
1192 newPageIndex = e.NewPageIndex;
1196 private void ResetEvents ()
1199 dataBinding = false;
1200 pageIndexChanging = false;
1201 gridViewCancelEdit = false;
1202 rowDeleting = false;
1204 rowUpdating = false;
1205 selectIndexChanging = false;
1210 private bool dataBinding;
1211 private bool dataBound;
1214 private bool pageIndexChanged;
1215 private bool pageIndexChanging;
1216 private bool preRender;
1217 private bool gridViewCancelEdit;
1218 private bool rowCommand;
1219 private bool rowCreated;
1220 private bool rowDataBound;
1221 private bool rowDeleted;
1222 private bool rowDeleting;
1223 private bool rowEditing;
1224 private bool rowUpdated;
1225 private bool rowUpdating;
1226 private bool selectIndexChanged;
1227 private bool selectIndexChanging;
1228 private bool sorted;
1229 private bool sorting;
1230 private bool unload;
1233 public void GridView_Events ()
1235 PokerGridView gv = new PokerGridView ();
1236 gv.DataSource = myds;
1238 gv.DataBinding += new EventHandler (gv_DataBinding);
1239 gv.DataBound += new EventHandler (gv_DataBound);
1240 gv.PageIndexChanging += new GridViewPageEventHandler (gv_PageIndexChanging);
1241 gv.PageIndexChanged += new EventHandler (gv_PageIndexChanged);
1242 gv.PreRender += new EventHandler (gv_PreRender);
1243 gv.RowCancelingEdit += new GridViewCancelEditEventHandler (gv_RowCancelingEdit);
1244 gv.RowCommand += new GridViewCommandEventHandler (gv_RowCommand);
1245 gv.RowCreated += new GridViewRowEventHandler (gv_RowCreated);
1246 gv.RowDataBound += new GridViewRowEventHandler (gv_RowDataBound);
1247 gv.RowDeleted += new GridViewDeletedEventHandler(gv_RowDeleted);
1248 gv.RowDeleting+= new GridViewDeleteEventHandler(gv_RowDeleting);
1249 gv.RowEditing+=new GridViewEditEventHandler(gv_RowEditing);
1250 gv.RowUpdated+= new GridViewUpdatedEventHandler(gv_RowUpdated);
1251 gv.RowUpdating+=new GridViewUpdateEventHandler(gv_RowUpdating);
1252 gv.SelectedIndexChanged +=new EventHandler(gv_SelectedIndexChanged);
1253 gv.SelectedIndexChanging+=new GridViewSelectEventHandler(gv_SelectedIndexChanging);
1254 gv.Sorted +=new EventHandler(gv_Sorted);
1255 gv.Sorting +=new GridViewSortEventHandler(gv_Sorting);
1256 gv.Unload+=new EventHandler(gv_Unload);
1259 Assert.AreEqual (false, dataBinding, "BeforeDataBinding");
1260 gv.DoOnDataBinding (new EventArgs ());
1261 Assert.AreEqual (true, dataBinding, "AfterDataBinding");
1262 Assert.AreEqual (false, dataBound, "BeforeDataBound");
1263 gv.DoOnDataBound (new EventArgs ());
1264 Assert.AreEqual (true, dataBound, "AfterDataBound");
1265 Assert.AreEqual (false, pageIndexChanged, "BeforepageIndexChanged");
1266 gv.DoOnPageIndexChanged (new EventArgs ());
1267 Assert.AreEqual (true, pageIndexChanged, "AfterpageIndexChanged");
1269 Assert.AreEqual (false, pageIndexChanging, "BeforepageIndexChanging");
1270 gv.DoOnPageIndexChanging (new GridViewPageEventArgs(1));
1271 Assert.AreEqual (true, pageIndexChanging, "AfterpageIndexChanging");
1272 Assert.AreEqual (false, preRender, "BeforePreRender");
1273 gv.DoOnPreRender (new EventArgs ());
1274 Assert.AreEqual (true, preRender, "AfterPreRender");
1276 Assert.AreEqual (false, gridViewCancelEdit, "BeforeGridViewCancelEdit");
1277 gv.DoOnRowCancelingEdit (new GridViewCancelEditEventArgs (1));
1278 Assert.AreEqual (true, gridViewCancelEdit, "AfterGridViewCancelEdit");
1280 Assert.AreEqual (false, rowCommand, "BeforeRowCommand");
1281 LinkButton lb= new LinkButton();
1282 gv.DoOnRowCommand (new GridViewCommandEventArgs(lb,new CommandEventArgs("",null)));
1283 Assert.AreEqual (true, rowCommand, "AfterRowCommand");
1284 Assert.AreEqual (false, rowCreated, "BeforeRowCreated");
1285 gv.DoOnRowCreated (new GridViewRowEventArgs (gv.SelectedRow));
1286 Assert.AreEqual (true, rowCommand, "AfterRowCreated");
1287 Assert.AreEqual (false, rowDataBound, "BeforeRowDataBound");
1288 gv.DoOnRowDataBound (new GridViewRowEventArgs (gv.SelectedRow));
1289 Assert.AreEqual (true, rowDataBound, "AfterRowDataBound");
1290 Assert.AreEqual (false, rowDeleted, "BeforeRowDeleted");
1291 gv.DoOnRowDeleted(new GridViewDeletedEventArgs(1,new ArgumentException()));
1292 Assert.AreEqual (true, rowDeleted, "AfterRowDeleted");
1294 Assert.AreEqual (false, rowDeleting, "BeforeRowDeleting");
1295 gv.DoOnRowDeleting (new GridViewDeleteEventArgs (0));
1296 Assert.AreEqual (true, rowDeleting, "AfterRowDeleting");
1298 Assert.AreEqual (false, rowEditing, "BeforeRowEditing");
1299 gv.DoOnRowEditing (new GridViewEditEventArgs (0));
1300 Assert.AreEqual (true, rowEditing, "AfterRowEditing");
1301 Assert.AreEqual (false, rowUpdated, "BeforeRowUpdated");
1302 gv.DoOnRowUpdated (new GridViewUpdatedEventArgs(1,new Exception()));
1303 Assert.AreEqual (true, rowUpdated, "AfterRowUpdated");
1305 Assert.AreEqual (false, rowUpdating, "BeforeRowUpdating");
1306 gv.DoOnRowUpdating (new GridViewUpdateEventArgs (0));
1307 Assert.AreEqual (true, rowUpdating, "AfterRowUpdating");
1308 Assert.AreEqual (false, selectIndexChanged, "BeforeSelectedIndexChanged");
1309 gv.DoOnSelectedIndexChanged (new EventArgs ());
1310 Assert.AreEqual (true, selectIndexChanged, "AfterSelectedIndexChanged");
1312 Assert.AreEqual (false, selectIndexChanging, "BeforeSelectedIndexChanging");
1313 gv.DoOnSelectedIndexChanging (new GridViewSelectEventArgs (2));
1314 Assert.AreEqual (true, selectIndexChanging, "AfterSelectedIndexChanging");
1315 Assert.AreEqual (false, sorted, "BeforeSorted");
1316 gv.DoOnSorted (new EventArgs ());
1317 Assert.AreEqual (true, sorted, "AfterSorted");
1318 Assert.AreEqual (false, sorting, "BeforeSorting");
1319 gv.DoOnSorting(new GridViewSortEventArgs("",SortDirection.Ascending));
1320 Assert.AreEqual (true, sorting, "AfterSorting");
1321 Assert.AreEqual (false, unload, "BeforeUnload");
1322 gv.DoOnUnload (new EventArgs ());
1323 Assert.AreEqual (true, unload, "AfterUnload");
1327 private void gv_Unload (object sender, EventArgs e)
1332 private void gv_Sorted (object sender, EventArgs e)
1337 private void gv_SelectedIndexChanged (object sender, EventArgs e)
1339 selectIndexChanged = true;
1342 private void gv_RowUpdated (object sender, EventArgs e)
1347 private void gv_RowDeleted (object sender, EventArgs e)
1352 private void gv_RowDataBound (object sender, EventArgs e)
1354 rowDataBound = true;
1357 private void gv_RowCreated (object sender, EventArgs e)
1362 private void gv_RowCommand (object sender, EventArgs e)
1367 private void gv_PreRender (object sender, EventArgs e)
1372 private void gv_DataBinding (object sender, EventArgs e)
1377 private void gv_DataBound (object sender, EventArgs e)
1382 private void gv_Init (object sender, EventArgs e)
1387 private void gv_Load (object sender, EventArgs e)
1392 private void gv_PageIndexChanged (object sender, EventArgs e)
1394 pageIndexChanged = true;
1398 public void GridView_PerformDataBiding ()
1400 PokerGridView gv = new PokerGridView ();
1401 gv.DoPerformDataBinding (myds);
1402 Assert.AreEqual (6, gv.Rows.Count, "PerformDataBiding_Rows");
1406 public void GridView_PrepareControlHierarchy ()
1408 PokerGridView gv = new PokerGridView ();
1409 gv.controlHierarchy = false;
1411 Assert.AreEqual (0, gv.Controls.Count, "ControlHierarchy_ControlsCount");
1412 Assert.AreEqual (true, gv.controlHierarchy, "ControlHierarchy_FirstFlow");
1413 gv.DataSource = myds;
1415 gv.controlHierarchy = false;
1417 Assert.AreEqual (1, gv.Controls.Count, "ControlHierarchy_ControlsCountSecondaryFlow");
1418 Assert.AreEqual (true, gv.controlHierarchy, "ControlHierarchy_SecondaryFlow");
1422 public void GridView_State ()
1424 PokerGridView g = new PokerGridView ();
1425 PokerGridView copy = new PokerGridView ();
1427 string[] test = new String[1];
1429 g.DataKeyNames = test;
1433 object state = g.DoSaveControlState ();
1434 copy.DoLoadControlState (state);
1436 Assert.AreEqual ("test", copy.DataKeyNames[0], "DataKeyNames");
1437 Assert.AreEqual (0, copy.EditIndex, "EditIndex");
1438 Assert.AreEqual (2, copy.PageIndex, "PageIndex");
1443 public void GridView_DefaultsRender ()
1445 PokerGridView b = new PokerGridView ();
1446 string html = b.Render ();
1447 Assert.AreEqual(-1 ,b.Render().IndexOf("table"), "RenderViewState");
1451 public void GridView_Render ()
1453 PokerGridView b = new PokerGridView ();
1454 b.DataSource = myds;
1456 string OriginControlHtml = @"<div>
1457 <table cellspacing=""0"" rules=""all"" border=""1"" style=""border-collapse:collapse;"">
1459 <th scope=""col"">Item</th>
1475 string RenderedControlHtml = b.Render ();
1476 HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "Rendering");
1480 public void GridView_RenderAllowPaging ()
1482 string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderAllowPaging)).Run ();
1483 string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
1484 string OriginControlHtml = @"<div>
1485 <table cellspacing=""0"" rules=""all"" border=""1"" style=""border-collapse:collapse;"">
1487 <th scope=""col"">Item</th>
1493 <td><table border=""0"">
1495 <td><span>1</span></td><td><a href=""javascript:__doPostBack('ctl01','Page$2')"">2</a></td>
1501 HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderDefault");
1504 public static void RenderAllowPaging (Page p)
1506 ArrayList myds = new ArrayList ();
1507 myds.Add ("Norway");
1508 myds.Add ("Sweden");
1509 myds.Add ("France");
1511 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
1512 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
1513 PokerGridView b = new PokerGridView ();
1514 p.Form.Controls.Add (lcb);
1515 p.Form.Controls.Add (b);
1516 b.AllowPaging = true;
1518 b.DataSource = myds;
1520 p.Form.Controls.Add (lce);
1524 [Category("NunitWeb")]
1525 public void GridView_RenderAllowPaging2 () {
1526 string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderAllowPaging2)).Run ();
1527 string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
1528 string OriginControlHtml = @"<div>
1529 <table cellspacing=""0"" rules=""all"" border=""1"" style=""border-collapse:collapse;"">
1531 <th scope=""col"">Item</th>
1537 <td><table border=""0"">
1539 <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>
1545 HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderDefault");
1548 public static void RenderAllowPaging2 (Page p) {
1549 ArrayList myds = new ArrayList ();
1550 myds.Add ("Norway");
1551 myds.Add ("Sweden");
1552 myds.Add ("France");
1554 myds.Add ("Norway");
1555 myds.Add ("Sweden");
1556 myds.Add ("France");
1558 myds.Add ("Norway");
1559 myds.Add ("Sweden");
1560 myds.Add ("France");
1562 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
1563 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
1564 PokerGridView b = new PokerGridView ();
1565 p.Form.Controls.Add (lcb);
1566 p.Form.Controls.Add (b);
1567 b.AllowPaging = true;
1570 b.PagerSettings.PageButtonCount = 4;
1571 b.PagerSettings.Mode= PagerButtons.NumericFirstLast;
1572 b.DataSource = myds;
1574 p.Form.Controls.Add (lce);
1578 public void GridView_RenderProperty ()
1580 string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderProperty)).Run ();
1581 string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
1582 string OriginControlHtml = @"<div id=""__gvctl01__div"">
1583 <table cellspacing=""1"" cellpadding=""0"" align=""Justify"" rules=""rows"" border=""1"" style=""background-image:url(http://test);"">
1584 <caption align=""Left"">
1587 <td><a href=""javascript:__doPostBack('ctl01','Edit$0')"">Edit</a> <a href=""javascript:__doPostBack('ctl01','Delete$0')"">Delete</a></td><td>Norway</td>
1589 <td><a href=""javascript:__doPostBack('ctl01','Edit$1')"">Edit</a> <a href=""javascript:__doPostBack('ctl01','Delete$1')"">Delete</a></td><td>Sweden</td>
1591 <td><a href=""javascript:__doPostBack('ctl01','Edit$2')"">Edit</a> <a href=""javascript:__doPostBack('ctl01','Delete$2')"">Delete</a></td><td>France</td>
1593 <td><a href=""javascript:__doPostBack('ctl01','Edit$3')"">Edit</a> <a href=""javascript:__doPostBack('ctl01','Delete$3')"">Delete</a></td><td>Italy</td>
1595 <td> </td><td> </td>
1599 HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderDefault");
1602 public static void RenderProperty (Page p)
1604 // Array list for simple datasource
1605 ArrayList myds = new ArrayList ();
1606 myds.Add ("Norway");
1607 myds.Add ("Sweden");
1608 myds.Add ("France");
1611 // Helper controls for searching usefull data from page
1612 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
1613 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
1614 PokerGridView g = new PokerGridView ();
1616 // Changing some property for test
1617 g.AutoGenerateDeleteButton = true;
1618 g.AutoGenerateEditButton = true;
1619 g.BackImageUrl = "http://test";
1621 g.CaptionAlign = TableCaptionAlign.Left;
1624 g.EnableSortingAndPagingCallbacks = true;
1625 g.GridLines = GridLines.Horizontal;
1626 g.HorizontalAlign = HorizontalAlign.Justify;
1627 g.ShowFooter = true;
1628 g.ShowHeader = false;
1629 g.UseAccessibleHeader = false;
1631 // Add controls for page
1632 p.Form.Controls.Add (lcb);
1633 p.Form.Controls.Add (g);
1635 // Data source and bind
1636 g.DataSource = myds;
1638 p.Form.Controls.Add (lce);
1642 /// From here rendering all possible field types and kinds of
1647 public void GridView_RenderingBoundField ()
1649 string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderingBoundField)).Run ();
1650 string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
1651 string OriginControlHtml = @"<div>
1652 <table cellspacing=""0"" rules=""all"" border=""1"" style=""border-collapse:collapse;"">
1654 <th scope=""col"">HeaderText</th>
1664 HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderingBoundField");
1668 public void GridView_RenderingCheckBoxField ()
1670 string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderingCheckBoxField)).Run ();
1671 string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
1672 string OriginControlHtml = @"<div>
1673 <table cellspacing=""0"" rules=""all"" border=""1"" style=""border-collapse:collapse;"">
1675 <th scope=""col"">HeaderText</th>
1677 <td><span disabled=""disabled""><input id="""" type=""checkbox"" name="""" checked=""checked"" disabled=""disabled"" /></span></td>
1679 <td><span disabled=""disabled""><input id="""" type=""checkbox"" name="""" disabled=""disabled"" /></span></td>
1685 HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderingCheckBoxField");
1689 public void GridView_RenderingCheckBoxField2 ()
1691 string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderingCheckBoxField2)).Run ();
1692 string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
1693 string OriginControlHtml = @"<div>
1694 <table cellspacing=""0"" rules=""all"" border=""1"" style=""border-collapse:collapse;"">
1696 <th scope=""col"">bool</th><th scope=""col"">str</th>
1698 <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>
1700 <td><span disabled=""disabled"" title=""bool""><input id=""ctl01_ctl03_ctl00"" type=""checkbox"" name=""ctl01$ctl03$ctl00"" disabled=""disabled"" /></span></td><td>2</td>
1702 <td> </td><td> </td>
1706 HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderingCheckBoxField2");
1710 public void GridView_RenderingImageField ()
1712 string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderingImageField)).Run ();
1713 string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
1714 string OriginControlHtml = @"<div>
1715 <table cellspacing=""0"" rules=""all"" border=""1"" style=""border-collapse:collapse;"">
1717 <th scope=""col"">HeaderText</th>
1719 <td><img src=""1"" alt=""1"" style=""border-width:0px;"" /></td>
1721 <td><img src=""2"" alt=""2"" style=""border-width:0px;"" /></td>
1727 HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderingImageField");
1731 public void GridView_RenderingCommandField ()
1733 string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderingCommandField)).Run ();
1734 string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
1735 string OriginControlHtml = @"<div>
1736 <table cellspacing=""0"" rules=""all"" border=""1"" style=""border-collapse:collapse;"">
1738 <th scope=""col"">HeaderText</th>
1740 <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>
1742 <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>
1748 HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderingCommandField");
1752 public void GridView_RenderingHyperLinkField ()
1754 string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderingHyperLinkField)).Run ();
1755 string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
1756 string OriginControlHtml = @"<div>
1757 <table cellspacing=""0"" rules=""all"" border=""1"" style=""border-collapse:collapse;"">
1759 <th scope=""col"">HeaderText</th>
1761 <td><a href=""1"">1</a></td>
1763 <td><a href=""2"">2</a></td>
1769 HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderingHyperLinkField");
1773 public void GridView_RenderingButtonField ()
1775 string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderingButtonField)).Run ();
1776 string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
1777 string OriginControlHtml = @"<div>
1778 <table cellspacing=""0"" rules=""all"" border=""1"" style=""border-collapse:collapse;"">
1780 <th scope=""col"">HeaderText</th><th scope=""col"">HeaderText</th><th scope=""col"">HeaderText</th>
1782 <td><input type=""button"" value=""1"" onclick=""javascript:__doPostBack('ctl01','0')"" /></td><td><a href=""javascript:__doPostBack('ctl01','0')"">1</a></td><td><input type=""image"" src="""" alt=""1"" onclick=""javascript:__doPostBack('ctl01','0')"" style=""border-width:0px;"" /></td>
1784 <td><input type=""button"" value=""2"" onclick=""javascript:__doPostBack('ctl01','1')"" /></td><td><a href=""javascript:__doPostBack('ctl01','1')"">2</a></td><td><input type=""image"" src="""" alt=""2"" onclick=""javascript:__doPostBack('ctl01','1')"" style=""border-width:0px;"" /></td>
1786 <td>FooterText</td><td>FooterText</td><td>FooterText</td>
1790 HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderingButtonField");
1798 public void GridView_RenderingTemplateField ()
1801 string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderingTemplateField)).Run ();
1802 string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
1803 string OriginControlHtml = @"<div>
1804 <table cellspacing=""0"" rules=""all"" border=""1"" style=""border-collapse:collapse;"">
1806 <th scope=""col""><input name="""" type=""text"" id="""" /></th>
1808 <td><input name="""" type=""text"" value=""1"" id="""" /></td>
1810 <td><input name="""" type=""text"" value=""2"" id="""" /></td>
1812 <td><input name="""" type=""text"" id="""" /></td>
1816 HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderingTemplateField");
1820 public static void RenderingTemplateField (Page p)
1822 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
1823 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
1824 GridView grid = new GridView ();
1826 grid.AutoGenerateColumns = false;
1827 grid.ShowFooter = true;
1828 TemplateField templatefield = new TemplateField ();
1829 templatefield.InsertVisible = true;
1830 templatefield.Visible = true;
1831 templatefield.HeaderText = "HeaderText";
1832 templatefield.FooterText = "FooterText";
1833 templatefield.ItemTemplate = new CompiledTemplateBuilder(BuildControl_itemtemplate);
1834 templatefield.HeaderTemplate = new CompiledTemplateBuilder (BuildControl_itemtemplate);
1835 templatefield.FooterTemplate= new CompiledTemplateBuilder (BuildControl_itemtemplate);
1836 grid.DataSource = GridViewTest.CreateDataSource ();
1837 grid.Columns.Add (templatefield);
1838 p.Form.Controls.Add (lcb);
1839 p.Form.Controls.Add (grid);
1840 p.Form.Controls.Add (lce);
1844 private static void BuildControl_itemtemplate (Control container)
1847 ctrl = new TextBox ();
1848 ctrl.ID = "TextBox1";
1849 ctrl.DataBinding += MyDataBinding;
1850 container.Controls.Add (ctrl);
1853 private static void MyDataBinding (object sender, EventArgs e)
1856 IDataItemContainer Container;
1857 Target = (TextBox) sender;
1858 Container = (IDataItemContainer) Target.BindingContainer;
1859 if ((Target.Page.GetDataItem () != null)) {
1860 Target.Text = Convert.ToString (DataBinder.Eval (Target.Page.GetDataItem(),"str"));
1865 public static void RenderingButtonField (Page p)
1867 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
1868 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
1869 GridView grid = new GridView ();
1870 grid.AutoGenerateColumns = false;
1871 grid.ShowFooter = true;
1872 p.Form.Controls.Add (lcb);
1873 p.Form.Controls.Add (grid);
1874 p.Form.Controls.Add (lce);
1876 ButtonField buttonfield = new ButtonField ();
1877 buttonfield.HeaderText = "HeaderText";
1878 buttonfield.FooterText = "FooterText";
1879 buttonfield.ButtonType = ButtonType.Button;
1880 buttonfield.DataTextField = STRINGFIELD;
1882 ButtonField buttonfieldlink = new ButtonField ();
1883 buttonfieldlink.HeaderText = "HeaderText";
1884 buttonfieldlink.FooterText = "FooterText";
1885 buttonfieldlink.ButtonType = ButtonType.Link;
1886 buttonfieldlink.DataTextField = STRINGFIELD;
1887 buttonfieldlink.CommandName = "cmd2";
1889 ButtonField buttonfieldimage = new ButtonField ();
1890 buttonfieldimage.HeaderText = "HeaderText";
1891 buttonfieldimage.FooterText = "FooterText";
1892 buttonfieldimage.ButtonType = ButtonType.Image;
1893 buttonfieldimage.DataTextField = STRINGFIELD;
1894 buttonfieldimage.CommandName = "cmd3";
1896 grid.DataSource = GridViewTest.CreateDataSource ();
1897 grid.Columns.Add (buttonfield);
1898 grid.Columns.Add (buttonfieldlink);
1899 grid.Columns.Add (buttonfieldimage);
1903 public static void RenderingHyperLinkField (Page p)
1905 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
1906 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
1907 GridView grid = new GridView ();
1908 grid.AutoGenerateColumns = false;
1909 grid.ShowFooter = true;
1910 p.Form.Controls.Add (lcb);
1911 p.Form.Controls.Add (grid);
1912 p.Form.Controls.Add (lce);
1913 HyperLinkField hyperlinkfield = new HyperLinkField ();
1914 hyperlinkfield.DataTextField = STRINGFIELD;
1915 string[] str = new string[] { STRINGFIELD };
1916 hyperlinkfield.DataNavigateUrlFields = str;
1917 hyperlinkfield.HeaderText = "HeaderText";
1918 hyperlinkfield.FooterText = "FooterText";
1919 grid.DataSource = GridViewTest.CreateDataSource ();
1920 grid.Columns.Add (hyperlinkfield);
1924 public static void RenderingCommandField (Page p)
1926 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
1927 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
1928 GridView grid = new GridView ();
1929 grid.AutoGenerateColumns = false;
1930 grid.ShowFooter = true;
1931 p.Form.Controls.Add (lcb);
1932 p.Form.Controls.Add (grid);
1933 p.Form.Controls.Add (lce);
1934 CommandField commandfield = new CommandField ();
1935 commandfield.HeaderText = "HeaderText";
1936 commandfield.FooterText = "FooterText";
1937 commandfield.ShowCancelButton = true;
1938 commandfield.ShowDeleteButton = true;
1939 commandfield.ShowEditButton = true;
1940 commandfield.ShowInsertButton = true;
1941 commandfield.ShowSelectButton = true;
1942 grid.DataSource = GridViewTest.CreateDataSource ();
1943 grid.Columns.Add (commandfield);
1947 public static void RenderingImageField (Page p)
1949 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
1950 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
1951 GridView grid = new GridView ();
1952 grid.AutoGenerateColumns = false;
1953 grid.ShowFooter = true;
1954 p.Form.Controls.Add (lcb);
1955 p.Form.Controls.Add (grid);
1956 p.Form.Controls.Add (lce);
1957 ImageField imagefield = new ImageField ();
1958 imagefield.HeaderText = "HeaderText";
1959 imagefield.FooterText = "FooterText";
1960 imagefield.DataImageUrlField = STRINGFIELD;
1961 imagefield.DataAlternateTextField = STRINGFIELD;
1962 grid.DataSource = GridViewTest.CreateDataSource ();
1963 grid.Columns.Add (imagefield);
1967 public static void RenderingBoundField (Page p)
1969 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
1970 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
1971 GridView grid = new GridView ();
1972 grid.AutoGenerateColumns = false;
1973 grid.ShowFooter = true;
1974 p.Form.Controls.Add (lcb);
1975 p.Form.Controls.Add (grid);
1976 p.Form.Controls.Add (lce);
1977 BoundField boundfield = new BoundField ();
1978 boundfield.DataField = STRINGFIELD;
1979 boundfield.HeaderText = "HeaderText";
1980 boundfield.FooterText = "FooterText";
1981 grid.DataSource = GridViewTest.CreateDataSource ();
1982 grid.Columns.Add (boundfield);
1986 public static void RenderingCheckBoxField (Page p)
1988 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
1989 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
1990 GridView grid = new GridView ();
1991 grid.AutoGenerateColumns = false;
1992 grid.ShowFooter = true;
1993 CheckBoxField checkboxfield = new CheckBoxField ();
1994 checkboxfield.DataField = BOOLFIELD;
1995 checkboxfield.HeaderText = "HeaderText";
1996 checkboxfield.FooterText = "FooterText";
1997 p.Form.Controls.Add (lcb);
1998 p.Form.Controls.Add (grid);
1999 p.Form.Controls.Add (lce);
2000 grid.DataSource = GridViewTest.CreateDataSource ();
2001 grid.Columns.Add (checkboxfield);
2005 public static void RenderingCheckBoxField2 (Page p)
2007 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
2008 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
2009 GridView grid = new GridView ();
2010 grid.AutoGenerateColumns = true;
2011 grid.ShowFooter = true;
2012 p.Form.Controls.Add (lcb);
2013 p.Form.Controls.Add (grid);
2014 p.Form.Controls.Add (lce);
2015 grid.DataSource = GridViewTest.CreateDataSource ();
2018 ///////////////////////////////////////////////////////
2019 ///// GRIDVIEW POSTBACK //////
2020 ///////////////////////////////////////////////////////
2023 public void GridView_GetPostBackOptions () {
2024 GridView gv = new GridView ();
2025 gv.Page = new Page ();
2026 IButtonControl btn = new Button ();
2027 btn.CausesValidation = false;
2028 Assert.IsFalse (btn.CausesValidation);
2029 Assert.AreEqual (String.Empty, btn.CommandName);
2030 Assert.AreEqual (String.Empty, btn.CommandArgument);
2031 Assert.AreEqual (String.Empty, btn.PostBackUrl);
2032 Assert.AreEqual (String.Empty, btn.ValidationGroup);
2033 PostBackOptions options = ((IPostBackContainer) gv).GetPostBackOptions (btn);
2034 Assert.IsFalse (options.PerformValidation);
2035 Assert.IsFalse (options.AutoPostBack);
2036 Assert.IsFalse (options.TrackFocus);
2037 Assert.IsTrue (options.ClientSubmit);
2038 Assert.IsTrue (options.RequiresJavaScriptProtocol);
2039 Assert.AreEqual ("$", options.Argument);
2040 Assert.AreEqual (null, options.ActionUrl);
2041 Assert.AreEqual (null, options.ValidationGroup);
2043 btn.ValidationGroup = "VG";
2044 btn.CommandName = "CMD";
2045 btn.CommandArgument = "ARG";
2046 btn.PostBackUrl = "Page.aspx";
2047 Assert.IsFalse (btn.CausesValidation);
2048 Assert.AreEqual ("CMD", btn.CommandName);
2049 Assert.AreEqual ("ARG", btn.CommandArgument);
2050 Assert.AreEqual ("Page.aspx", btn.PostBackUrl);
2051 Assert.AreEqual ("VG", btn.ValidationGroup);
2052 options = ((IPostBackContainer) gv).GetPostBackOptions (btn);
2053 Assert.IsFalse (options.PerformValidation);
2054 Assert.IsFalse (options.AutoPostBack);
2055 Assert.IsFalse (options.TrackFocus);
2056 Assert.IsTrue (options.ClientSubmit);
2057 Assert.IsTrue (options.RequiresJavaScriptProtocol);
2058 Assert.AreEqual ("CMD$ARG", options.Argument);
2059 Assert.AreEqual (null, options.ActionUrl);
2060 Assert.AreEqual (null, options.ValidationGroup);
2064 [ExpectedException (typeof (InvalidOperationException))]
2065 public void GridView_GetPostBackOptions_CausesValidation () {
2066 GridView gv = new GridView ();
2067 gv.Page = new Page ();
2068 IButtonControl btn = new Button ();
2069 Assert.IsTrue (btn.CausesValidation);
2070 Assert.AreEqual (String.Empty, btn.CommandName);
2071 Assert.AreEqual (String.Empty, btn.CommandArgument);
2072 Assert.AreEqual (String.Empty, btn.PostBackUrl);
2073 Assert.AreEqual (String.Empty, btn.ValidationGroup);
2074 PostBackOptions options = ((IPostBackContainer) gv).GetPostBackOptions (btn);
2078 [ExpectedException(typeof(ArgumentNullException))]
2079 public void GridView_GetPostBackOptions_Null_Argument () {
2080 GridView gv = new GridView ();
2081 gv.Page = new Page ();
2082 PostBackOptions options = ((IPostBackContainer) gv).GetPostBackOptions (null);
2086 [Category ("NunitWeb")]
2087 public void GridView_PostBackSotring ()
2089 WebTest t = new WebTest (PageInvoker.CreateOnLoad (GridView_postback));
2090 string pageHTML = t.Run ();
2091 Assert.AreEqual (-1, pageHTML.IndexOf ("SortingSuccess"), "BeforeSorting");
2092 FormRequest fr = new FormRequest (t.Response, "form1");
2093 fr.Controls.Add ("__EVENTTARGET");
2094 fr.Controls.Add ("__EVENTARGUMENT");
2095 fr.Controls["__EVENTTARGET"].Value = "mygrid";
2096 fr.Controls["__EVENTARGUMENT"].Value = "Sort$Item";
2098 t.Invoker = PageInvoker.CreateOnLoad (GridView_postback);
2099 pageHTML = t.Run ();
2100 if (pageHTML.IndexOf ("SortingSuccess") < 0) {
2101 Assert.Fail ("SortingFail");
2106 [Category ("NunitWeb")]
2107 public void GridView_PostBackPaging ()
2109 WebTest t = new WebTest (PageInvoker.CreateOnLoad (GridView_postback));
2110 string pageHTML = t.Run ();
2111 Assert.AreEqual (-1, pageHTML.IndexOf ("PagingSuccess"), "BeforePaging");
2112 FormRequest fr = new FormRequest (t.Response, "form1");
2113 fr.Controls.Add ("__EVENTTARGET");
2114 fr.Controls.Add ("__EVENTARGUMENT");
2115 fr.Controls["__EVENTTARGET"].Value = "mygrid";
2116 fr.Controls["__EVENTARGUMENT"].Value = "Page$2";
2118 t.Invoker = PageInvoker.CreateOnLoad (GridView_postback);
2119 pageHTML = t.Run ();
2120 if (pageHTML.IndexOf ("PagingSuccess") < 0) {
2121 Assert.Fail ("PagingFail");
2126 [Category ("NunitWeb")]
2127 public void GridView_PostBackDelete ()
2129 WebTest t = new WebTest (PageInvoker.CreateOnLoad (GridView_postback));
2130 string pageHTML = t.Run ();
2131 Assert.AreEqual (-1, pageHTML.IndexOf ("DeleteSuccess"), "BeforeDelete");
2132 FormRequest fr = new FormRequest (t.Response, "form1");
2133 fr.Controls.Add ("__EVENTTARGET");
2134 fr.Controls.Add ("__EVENTARGUMENT");
2135 fr.Controls["__EVENTTARGET"].Value = "mygrid";
2136 fr.Controls["__EVENTARGUMENT"].Value = "Delete$0";
2138 t.Invoker = PageInvoker.CreateOnLoad (GridView_postback);
2139 pageHTML = t.Run ();
2140 if (pageHTML.IndexOf ("DeleteSuccess") < 0) {
2141 Assert.Fail ("DeleteFail");
2146 [Category ("NunitWeb")]
2147 public void GridView_PostBackDeleteItem ()
2149 WebTest t = new WebTest ();
2150 PageDelegates pd = new PageDelegates ();
2151 pd.Load = GridView_postbackdeleteitem;
2152 pd.PreRenderComplete = GridView_checkrows;
2153 t.Invoker = new PageInvoker (pd);
2154 string pageHTML = t.Run ();
2155 if (pageHTML.IndexOf ("Delete") < 0){
2156 Assert.Fail ("BeforeDelete");
2158 Assert.AreEqual (1, t.UserData , "ObjectDataSource before delete from grid");
2159 FormRequest fr = new FormRequest (t.Response, "form1");
2160 fr.Controls.Add ("__EVENTTARGET");
2161 fr.Controls.Add ("__EVENTARGUMENT");
2162 fr.Controls["__EVENTTARGET"].Value = "Grid";
2163 fr.Controls["__EVENTARGUMENT"].Value = "Delete$0";
2165 pageHTML = t.Run ();
2166 Assert.AreEqual (0, t.UserData , "ObjectDataSource after delete from grid");
2169 public static void GridView_checkrows (Page p)
2171 GridView grid = p.FindControl ("Grid") as GridView;
2173 Assert.Fail ("GridView does not created");
2175 WebTest.CurrentTest.UserData = grid.Rows.Count;
2178 public static void GridView_postbackdeleteitem (Page p)
2180 GridView grid = new GridView ();
2181 ObjectDataSource ds = new ObjectDataSource ();
2182 ds.ID = "ObjectDataSource2";
2184 ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataObject";
2185 ds.SelectMethod = "Select";
2186 ds.DeleteMethod = "Delete";
2187 ds.InsertMethod = "Insert";
2188 ds.UpdateMethod = "Update";
2189 Parameter p1 = new Parameter ("ID", TypeCode.String);
2190 Parameter p2 = new Parameter ("FName", TypeCode.String);
2191 Parameter p3 = new Parameter ("LName", TypeCode.String);
2192 ds.DeleteParameters.Add (p1);
2193 ds.DeleteParameters.Add (p2);
2194 ds.DeleteParameters.Add (p3);
2196 grid.DataKeyNames = new string[] { "ID", "FName", "LName" };
2197 grid.AutoGenerateDeleteButton = true;
2198 grid.DataSourceID = "ObjectDataSource2";
2199 p.Form.Controls.Add (ds);
2200 p.Form.Controls.Add (grid);
2205 [Category ("NunitWeb")]
2206 public void GridView_PostBackUpdateItem ()
2208 WebTest t = new WebTest ();
2209 PageDelegates pd = new PageDelegates ();
2210 pd.Load = GridView_postbackupdateitem;
2211 pd.PreRenderComplete = GridView_checkrowsupdate;
2212 t.Invoker = new PageInvoker (pd);
2213 string pageHTML = t.Run ();
2214 if (pageHTML.IndexOf ("Edit") < 0) {
2215 Assert.Fail ("BeforeEdit");
2218 string[] merged_data = t.UserData as string[];
2219 if (merged_data == null) {
2220 Assert.Fail ("Grid rows not created#1");
2223 Assert.AreEqual ("1001", merged_data[1], "Row before update#1");
2224 Assert.AreEqual ("Mahesh", merged_data[2], "Row before update#2");
2225 Assert.AreEqual ("Chand", merged_data[3], "Row before update#3");
2227 FormRequest fr = new FormRequest (t.Response, "form1");
2228 fr.Controls.Add ("__EVENTTARGET");
2229 fr.Controls.Add ("__EVENTARGUMENT");
2230 fr.Controls["__EVENTTARGET"].Value = "Grid";
2231 fr.Controls["__EVENTARGUMENT"].Value = "Edit$0";
2234 pageHTML = t.Run ();
2236 merged_data = t.UserData as string[];
2237 if (merged_data == null) {
2238 Assert.Fail ("Grid rows not created#2");
2241 fr = new FormRequest (t.Response, "form1");
2242 fr.Controls.Add ("__EVENTTARGET");
2243 fr.Controls.Add ("__EVENTARGUMENT");
2244 fr.Controls.Add (merged_data[4]);
2245 fr.Controls.Add (merged_data[5]);
2246 fr.Controls.Add (merged_data[6]);
2248 fr.Controls["__EVENTTARGET"].Value = merged_data[0];
2249 fr.Controls["__EVENTARGUMENT"].Value = "";
2250 fr.Controls[merged_data[4]].Value = "1001";
2251 fr.Controls[merged_data[5]].Value = "TestEname";
2252 fr.Controls[merged_data[6]].Value = "TestLname";
2254 pageHTML = t.Run ();
2256 merged_data = t.UserData as string[];
2257 if (merged_data == null) {
2258 Assert.Fail ("Grid rows not created#3");
2261 Assert.AreEqual ("1001", merged_data[1], "Row before update#1");
2262 Assert.AreEqual ("TestEname", merged_data[2], "Row before update#2");
2263 Assert.AreEqual ("TestLname", merged_data[3], "Row before update#3");
2266 public static void GridView_postbackupdateitem (Page p)
2269 DataObject.Reset ();
2271 GridView grid = new GridView ();
2272 ObjectDataSource ds = new ObjectDataSource ();
2274 ds.ID = "ObjectDataSource2";
2275 ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataObject";
2276 ds.SelectMethod = "Select";
2277 ds.DeleteMethod = "Delete";
2278 ds.InsertMethod = "Insert";
2279 ds.UpdateMethod = "Update";
2281 Parameter p1 = new Parameter ("ID", TypeCode.String);
2282 Parameter p2 = new Parameter ("FName", TypeCode.String);
2283 Parameter p3 = new Parameter ("LName", TypeCode.String);
2285 ds.UpdateParameters.Add (p1);
2286 ds.UpdateParameters.Add (p2);
2287 ds.UpdateParameters.Add (p3);
2290 grid.AutoGenerateEditButton = true;
2292 grid.AutoGenerateColumns = false;
2294 BoundField field = new BoundField ();
2295 field.DataField = "ID";
2296 grid.Columns.Add (field);
2298 field = new BoundField ();
2299 field.DataField = "FName";
2300 grid.Columns.Add (field);
2302 field = new BoundField ();
2303 field.DataField = "LName";
2304 grid.Columns.Add (field);
2306 grid.DataSourceID = "ObjectDataSource2";
2307 p.Form.Controls.Add (ds);
2308 p.Form.Controls.Add (grid);
2311 public static void GridView_checkrowsupdate (Page p)
2313 GridView grid = p.FindControl ("Grid") as GridView;
2315 Assert.Fail ("Gridview does not been created");
2317 string[] data = new string[7];
2319 data[0] = grid.Rows[0].Cells[0].Controls[0].UniqueID;
2321 catch (Exception e) {
2322 Assert.Fail ("Update button not been created" + e.Message);
2325 data[1] = grid.Rows[0].Cells[1].Text;
2326 data[2] = grid.Rows[0].Cells[2].Text;
2327 data[3] = grid.Rows[0].Cells[3].Text;
2331 if (grid.Rows[0].Cells[1].Controls.Count > 0) {
2332 data[4] = grid.Rows[0].Cells[1].Controls[0].UniqueID;
2333 data[5] = grid.Rows[0].Cells[2].Controls[0].UniqueID;
2334 data[6] = grid.Rows[0].Cells[3].Controls[0].UniqueID;
2337 WebTest.CurrentTest.UserData = data;
2341 [Category ("NunitWeb")]
2342 public void GridView_PostBackEdit ()
2344 WebTest t = new WebTest (PageInvoker.CreateOnLoad (GridView_postback));
2345 string pageHTML = t.Run ();
2346 Assert.AreEqual (-1, pageHTML.IndexOf ("EditSuccess"), "BeforeEdit");
2347 FormRequest fr = new FormRequest (t.Response, "form1");
2348 fr.Controls.Add ("__EVENTTARGET");
2349 fr.Controls.Add ("__EVENTARGUMENT");
2350 fr.Controls["__EVENTTARGET"].Value = "mygrid";
2351 fr.Controls["__EVENTARGUMENT"].Value = "Edit$0";
2353 t.Invoker = PageInvoker.CreateOnLoad (GridView_postback);
2354 pageHTML = t.Run ();
2355 if (pageHTML.IndexOf ("EditSuccess") < 0) {
2356 Assert.Fail ("EditFail");
2361 [Category ("NunitWeb")]
2362 public void GridView_PostBackSelect ()
2364 WebTest t = new WebTest (PageInvoker.CreateOnLoad (GridView_postback));
2365 string pageHTML = t.Run ();
2366 Assert.AreEqual (-1, pageHTML.IndexOf ("SelectSuccess"), "BeforeSelect");
2367 FormRequest fr = new FormRequest (t.Response, "form1");
2368 fr.Controls.Add ("__EVENTTARGET");
2369 fr.Controls.Add ("__EVENTARGUMENT");
2370 fr.Controls["__EVENTTARGET"].Value = "mygrid";
2371 fr.Controls["__EVENTARGUMENT"].Value = "Select$0";
2373 t.Invoker = PageInvoker.CreateOnLoad (GridView_postback);
2374 pageHTML = t.Run ();
2375 if (pageHTML.IndexOf ("SelectSuccess") < 0) {
2376 Assert.Fail ("SelectFail");
2380 public void GridView_postback (Page p)
2382 PokerGridView b = new PokerGridView ();
2384 b.PageIndexChanging += new GridViewPageEventHandler (b_PageIndexChanging);
2385 b.Sorting += new GridViewSortEventHandler (b_Sorting);
2386 b.RowDeleting += new GridViewDeleteEventHandler (b_RowDeleting);
2387 b.RowEditing += new GridViewEditEventHandler (b_RowEditing);
2388 b.SelectedIndexChanging += new GridViewSelectEventHandler (b_SelectedIndexChanging);
2389 ArrayList myds = new ArrayList ();
2390 myds.Add ("Norway");
2391 myds.Add ("Sweden");
2392 myds.Add ("France");
2395 p.Form.Controls.Add (b);
2396 b.AllowPaging = true;
2398 b.AllowSorting = true;
2400 b.AutoGenerateDeleteButton = true;
2401 b.AutoGenerateEditButton = true;
2402 b.AutoGenerateSelectButton = true;
2404 b.DataSource = myds;
2408 public void b_RowEditing (object o, GridViewEditEventArgs e)
2410 ((GridView) o).Page.Controls.Add (new LiteralControl ("EditSuccess"));
2411 Assert.AreEqual (false, e.Cancel, "EditCancel");
2412 Assert.AreEqual (0, e.NewEditIndex, "NewEditIndex");
2415 public void b_PageIndexChanging (object o, GridViewPageEventArgs e)
2417 ((GridView) o).Page.Controls.Add (new LiteralControl ("PagingSuccess"));
2418 Assert.AreEqual(false,e.Cancel,"Cancel");
2421 public void b_Sorting (object o, GridViewSortEventArgs e)
2423 ((GridView) o).Page.Controls.Add (new LiteralControl ("SortingSuccess"));
2426 public void b_RowDeleting (object o, GridViewDeleteEventArgs e)
2428 ((GridView) o).Page.Controls.Add (new LiteralControl ("DeleteSuccess"));
2431 public void b_SelectedIndexChanging (object o, GridViewSelectEventArgs e)
2433 ((GridView) o).Page.Controls.Add (new LiteralControl ("SelectSuccess"));
2438 /// All possible exceptions what can be thrown
2442 [ExpectedException (typeof (InvalidOperationException))]
2443 public void GridView_GetDefaultSelectedValue ()
2445 PokerGridView g = new PokerGridView ();
2446 object o = g.SelectedValue;
2450 [Category ("NunitWeb")]
2451 [Category ("NotDotNet")]
2452 public void GridViewUpdate () {
2453 WebTest t = new WebTest ("GridViewUpdate.aspx");
2454 string pageHTML = HtmlDiff.GetControlFromPageHtml (t.Run ());
2456 FormRequest fr = new FormRequest (t.Response, "form1");
2457 fr.Controls.Add ("__EVENTTARGET");
2458 fr.Controls.Add ("__EVENTARGUMENT");
2459 fr.Controls.Add ("GridView1$ctl02$Name"); // for .NET use "GridView1$ctl02$Name"
2460 fr.Controls.Add ("GridView1$ctl03$Name");
2461 fr.Controls ["__EVENTTARGET"].Value = "Button1";
2462 fr.Controls ["__EVENTARGUMENT"].Value = "";
2463 fr.Controls ["GridView1$ctl02$Name"].Value = "ABC";
2464 fr.Controls ["GridView1$ctl03$Name"].Value = "123";
2466 t.Invoker = PageInvoker.CreateOnLoad (GridView_postback);
2467 pageHTML = HtmlDiff.GetControlFromPageHtml (t.Run ());
2469 string original = @"<div>
2470 <table cellspacing=""0"" rules=""all"" border=""1"" id=""GridView1"" style=""border-collapse:collapse;"">
2472 <th scope=""col"">ID</th><th scope=""col""> </th>
2475 <input name=""GridView1$ctl02$Name"" type=""text"" value=""ABC"" id=""GridView1_ctl02_Name"" />
2476 <input type=""button"" name=""GridView1$ctl02$b1"" value=""upd"" onclick=""javascript:__doPostBack('GridView1$ctl02$b1','')"" id=""GridView1_ctl02_b1"" />
2480 <input name=""GridView1$ctl03$Name"" type=""text"" value=""123"" id=""GridView1_ctl03_Name"" />
2481 <input type=""button"" name=""GridView1$ctl03$b1"" value=""upd"" onclick=""javascript:__doPostBack('GridView1$ctl03$b1','')"" id=""GridView1_ctl03_b1"" />
2488 HtmlDiff.AssertAreEqual (original, pageHTML, "GridViewUpdate #1");
2490 fr = new FormRequest (t.Response, "form1");
2491 fr.Controls.Add ("__EVENTTARGET");
2492 fr.Controls.Add ("__EVENTARGUMENT");
2493 fr.Controls.Add ("GridView1$ctl02$Name");
2494 fr.Controls.Add ("GridView1$ctl03$Name");
2495 fr.Controls ["__EVENTTARGET"].Value = "GridView1$ctl02$b1";
2496 fr.Controls ["__EVENTARGUMENT"].Value = "";
2497 fr.Controls ["GridView1$ctl02$Name"].Value = "ABC";
2498 fr.Controls ["GridView1$ctl03$Name"].Value = "123";
2500 t.Invoker = PageInvoker.CreateOnLoad (GridView_postback);
2501 pageHTML = HtmlDiff.GetControlFromPageHtml (t.Run ());
2504 <table cellspacing=""0"" rules=""all"" border=""1"" id=""GridView1"" style=""border-collapse:collapse;"">
2506 <th scope=""col"">ID</th><th scope=""col""> </th>
2509 <input name=""GridView1$ctl02$Name"" type=""text"" value=""ABC"" id=""GridView1_ctl02_Name"" />
2510 <input type=""button"" name=""GridView1$ctl02$b1"" value=""upd"" onclick=""javascript:__doPostBack('GridView1$ctl02$b1','')"" id=""GridView1_ctl02_b1"" />
2514 <input name=""GridView1$ctl03$Name"" type=""text"" value=""heh2"" id=""GridView1_ctl03_Name"" />
2515 <input type=""button"" name=""GridView1$ctl03$b1"" value=""upd"" onclick=""javascript:__doPostBack('GridView1$ctl03$b1','')"" id=""GridView1_ctl03_b1"" />
2522 HtmlDiff.AssertAreEqual (original, pageHTML, "GridViewUpdate #2");
2524 fr = new FormRequest (t.Response, "form1");
2525 fr.Controls.Add ("__EVENTTARGET");
2526 fr.Controls.Add ("__EVENTARGUMENT");
2527 fr.Controls.Add ("GridView1$ctl02$Name");
2528 fr.Controls.Add ("GridView1$ctl03$Name");
2529 fr.Controls ["__EVENTTARGET"].Value = "GridView1$ctl03$b1";
2530 fr.Controls ["__EVENTARGUMENT"].Value = "";
2531 fr.Controls ["GridView1$ctl02$Name"].Value = "ABC";
2532 fr.Controls ["GridView1$ctl03$Name"].Value = "123";
2534 t.Invoker = PageInvoker.CreateOnLoad (GridView_postback);
2535 pageHTML = HtmlDiff.GetControlFromPageHtml (t.Run ());
2538 <table cellspacing=""0"" rules=""all"" border=""1"" id=""GridView1"" style=""border-collapse:collapse;"">
2540 <th scope=""col"">ID</th><th scope=""col""> </th>
2543 <input name=""GridView1$ctl02$Name"" type=""text"" value=""ABC"" id=""GridView1_ctl02_Name"" />
2544 <input type=""button"" name=""GridView1$ctl02$b1"" value=""upd"" onclick=""javascript:__doPostBack('GridView1$ctl02$b1','')"" id=""GridView1_ctl02_b1"" />
2548 <input name=""GridView1$ctl03$Name"" type=""text"" value=""123"" id=""GridView1_ctl03_Name"" />
2549 <input type=""button"" name=""GridView1$ctl03$b1"" value=""upd"" onclick=""javascript:__doPostBack('GridView1$ctl03$b1','')"" id=""GridView1_ctl03_b1"" />
2556 HtmlDiff.AssertAreEqual (original, pageHTML, "GridViewUpdate #3");
2559 [TestFixtureTearDown]
2560 public void TearDown()
2566 public static DataTable CreateDataSource ()
2568 DataTable aTable = new DataTable ("A");
2571 // Create ID column and add to the DataTable.
2572 dtCol = new DataColumn ();
2573 dtCol.DataType = Type.GetType ("System.Boolean");
2574 dtCol.ColumnName = BOOLFIELD;
2575 dtCol.Caption = BOOLFIELD;
2576 dtCol.ReadOnly = true;
2578 // Add the column to the DataColumnCollection.
2579 aTable.Columns.Add (dtCol);
2581 dtCol = new DataColumn ();
2582 dtCol.DataType = Type.GetType ("System.String");
2583 dtCol.ColumnName = STRINGFIELD;
2584 dtCol.Caption = STRINGFIELD;
2585 dtCol.ReadOnly = true;
2587 // Add the column to the DataColumnCollection.
2588 aTable.Columns.Add (dtCol);
2590 // Create 2 rows to the table
2591 dtRow = aTable.NewRow ();
2592 dtRow[BOOLFIELD] = true;
2593 dtRow[STRINGFIELD] = "1";
2594 aTable.Rows.Add (dtRow);
2596 dtRow = aTable.NewRow ();
2597 dtRow[BOOLFIELD] = false;
2598 dtRow[STRINGFIELD] = "2";
2599 aTable.Rows.Add (dtRow);
2603 // A simple Template class to wrap an image.
2604 public class ImageTemplate : ITemplate
2606 private MyWebControl.Image myImage;
2607 public MyWebControl.Image MyImage
2618 public void InstantiateIn (Control container)
2620 container.Controls.Add (MyImage);
2625 public class DataObject
2627 public static DataTable ds = CreateDataTable ();
2628 public static DataTable Select ()
2633 public static void Reset ()
2635 ds = CreateDataTable ();
2638 public static DataTable Delete (string ID, string FName, string LName)
2640 DataRow dr = ds.Rows.Find (ID);
2642 ds.Rows.Remove (dr);
2647 public static DataTable Insert (string ID, string FName, string LName)
2649 DataRow dr = ds.NewRow ();
2651 dr["FName"] = FName;
2652 dr["LName"] = LName;
2657 public static DataTable Update (string ID, string FName, string LName)
2659 foreach (DataRow row in ds.Rows) {
2660 if (row["ID"].ToString () == ID) {
2661 row["FName"] = FName;
2662 row["LName"] = LName;
2668 public static DataTable CreateDataTable ()
2670 DataTable aTable = new DataTable ("A");
2674 // Create ID column and add to the DataTable.
2675 dtCol = new DataColumn ();
2676 dtCol.DataType = Type.GetType ("System.Int32");
2677 dtCol.ColumnName = "ID";
2678 dtCol.AutoIncrement = true;
2679 dtCol.Caption = "ID";
2680 dtCol.ReadOnly = true;
2681 dtCol.Unique = true;
2682 aTable.Columns.Add (dtCol);
2684 // Create Name column and add to the table
2685 dtCol = new DataColumn ();
2686 dtCol.DataType = Type.GetType ("System.String");
2687 dtCol.ColumnName = "FName";
2688 dtCol.AutoIncrement = false;
2689 dtCol.Caption = "First Name";
2690 dtCol.ReadOnly = false;
2691 dtCol.Unique = false;
2692 aTable.Columns.Add (dtCol);
2694 // Create Last Name column and add to the table.
2695 dtCol = new DataColumn ();
2696 dtCol.DataType = Type.GetType ("System.String");
2697 dtCol.ColumnName = "LName";
2698 dtCol.AutoIncrement = false;
2699 dtCol.Caption = "Last Name";
2700 dtCol.ReadOnly = false;
2701 dtCol.Unique = false;
2702 aTable.Columns.Add (dtCol);
2704 // Create three rows to the table
2705 dtRow = aTable.NewRow ();
2707 dtRow["FName"] = "Mahesh";
2708 dtRow["LName"] = "Chand";
2709 aTable.Rows.Add (dtRow);
2711 aTable.PrimaryKey = new DataColumn[] { aTable.Columns["ID"] };