2 // Tests for System.Web.UI.WebControls.FormView.cs
\r
5 // Chris Toshok (toshok@ximian.com)
\r
9 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
\r
11 // Permission is hereby granted, free of charge, to any person obtaining
\r
12 // a copy of this software and associated documentation files (the
\r
13 // "Software"), to deal in the Software without restriction, including
\r
14 // without limitation the rights to use, copy, modify, merge, publish,
\r
15 // distribute, sublicense, and/or sell copies of the Software, and to
\r
16 // permit persons to whom the Software is furnished to do so, subject to
\r
17 // the following conditions:
\r
19 // The above copyright notice and this permission notice shall be
\r
20 // included in all copies or substantial portions of the Software.
\r
22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
\r
23 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
\r
24 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
\r
25 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
\r
26 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
\r
27 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
\r
28 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\r
33 using NUnit.Framework;
\r
37 using System.Drawing;
\r
38 using System.Collections;
\r
39 using System.Collections.Generic;
\r
40 using System.Collections.Specialized;
\r
41 using System.Globalization;
\r
43 using System.Web.UI;
\r
44 using System.Web.UI.HtmlControls;
\r
45 using System.Web.UI.WebControls;
\r
46 using MonoTests.SystemWeb.Framework;
\r
47 using MonoTests.stand_alone.WebHarness;
\r
48 using System.Text.RegularExpressions;
\r
49 using System.Reflection;
\r
50 using System.Threading;
\r
53 namespace MonoTests.System.Web.UI.WebControls
\r
56 public class FormViewTest {
\r
58 public class DataSourceObject
\r
60 public static List<string> GetList (string sortExpression, int startRowIndex, int maximumRows) {
\r
64 public static List<string> GetList (int startRowIndex, int maximumRows) {
\r
68 public static List<string> GetList (string sortExpression) {
\r
72 public static List<string> GetList () {
\r
73 List<string> list = new List<string> ();
\r
74 list.Add ("Norway");
\r
75 list.Add ("Sweden");
\r
76 list.Add ("France");
\r
78 list.Add ("Israel");
\r
79 list.Add ("Russia");
\r
83 public static int GetCount () {
\r
84 return GetList ().Count;
\r
88 public class Poker : FormView {
\r
89 public bool isInitializePager=false;
\r
90 public bool ensureDataBound=false;
\r
91 public bool controlHierarchy=false;
\r
92 bool _onPageIndexChangingCalled = false;
\r
93 bool _onPageIndexChangedCalled = false;
\r
99 public object SaveState () {
\r
100 return SaveViewState ();
\r
103 public void LoadState (object state) {
\r
104 LoadViewState (state);
\r
108 public HtmlTextWriterTag PokerTagKey
\r
110 get { return base.TagKey; }
\r
113 public int DoCreateChildControls (IEnumerable source,bool dataBind)
\r
115 return CreateChildControls (source, dataBind);
\r
119 public Style DoCreateControlStyle ()
\r
121 return base.CreateControlStyle ();
\r
124 public DataSourceSelectArguments DoCreateDataSourceSelectArguments ()
\r
126 return CreateDataSourceSelectArguments ();
\r
129 public DataSourceView DoGetData ()
\r
134 public FormViewRow DoCreateRow (int itemIndex,DataControlRowType rowType,DataControlRowState rowState)
\r
136 return CreateRow( itemIndex, rowType,rowState);
\r
139 public Table DoCreateTable ()
\r
141 return CreateTable ();
\r
144 protected override void EnsureDataBound ()
\r
146 base.EnsureDataBound ();
\r
147 ensureDataBound = true;
\r
150 public void DoExtractRowValues (IOrderedDictionary filedValues, bool includeKeys)
\r
152 base.ExtractRowValues (filedValues, includeKeys);
\r
156 protected override void InitializePager (FormViewRow row, PagedDataSource pageData)
\r
158 base.InitializePager (row, pageData);
\r
159 isInitializePager = true;
\r
162 public void DoInitializeRow (FormViewRow row)
\r
164 InitializeRow (row);
\r
166 public void DoLoadControlState (object savedState)
\r
168 LoadControlState (savedState);
\r
171 public void DoLoadViewState (object savedState)
\r
173 LoadViewState (savedState);
\r
176 public bool DoOnBubbleEvent (object source, EventArgs e)
\r
178 return OnBubbleEvent (source, e);
\r
181 public void DoOnInit (EventArgs e)
\r
186 public void DoOnItemCommand (FormViewCommandEventArgs e)
\r
188 OnItemCommand (e);
\r
191 public void DoOnItemCreated (EventArgs e)
\r
193 OnItemCreated (e);
\r
196 public void DoOnItemDeleted (FormViewDeletedEventArgs e)
\r
198 OnItemDeleted (e);
\r
201 public void DoOnItemDeleting (FormViewDeleteEventArgs e)
\r
203 OnItemDeleting (e);
\r
206 public void DoOnItemInserted (FormViewInsertedEventArgs e)
\r
208 OnItemInserted (e);
\r
211 public void DoOnItemInserting (FormViewInsertEventArgs e)
\r
213 OnItemInserting (e);
\r
216 public void DoOnItemUpdated (FormViewUpdatedEventArgs e)
\r
218 OnItemUpdated (e);
\r
221 public void DoOnItemUpdating (FormViewUpdateEventArgs e)
\r
223 OnItemUpdating (e);
\r
226 public void DoOnModeChanged (EventArgs e )
\r
228 OnModeChanged (e);
\r
231 public void DoOnModeChanging (FormViewModeEventArgs e)
\r
233 OnModeChanging (e);
\r
236 public void DoOnPageIndexChanged (EventArgs e)
\r
238 OnPageIndexChanged (e);
\r
241 public void DoOnPageIndexChanging (FormViewPageEventArgs e)
\r
243 OnPageIndexChanging (e);
\r
246 public void DoPerformDataBinding (IEnumerable data)
\r
248 PerformDataBinding (data);
\r
251 protected override void PrepareControlHierarchy ()
\r
254 base.PrepareControlHierarchy ();
\r
255 controlHierarchy = true;
\r
258 public void DoRaisePostBackEvent (string eventArgument)
\r
260 RaisePostBackEvent (eventArgument);
\r
263 public string Render ()
\r
266 StringWriter sw = new StringWriter ();
\r
267 HtmlTextWriter tw = new HtmlTextWriter (sw);
\r
269 return sw.ToString ();
\r
275 public object DoSaveControlState ()
\r
277 return SaveControlState ();
\r
282 public void DoConfirmInitState ()
\r
284 base.ConfirmInitState ();
\r
287 public void DoOnPreRender (EventArgs e)
\r
289 base.OnPreRender (e);
\r
292 public void DoOnDataBinding (EventArgs e)
\r
294 base.OnDataBinding (e);
\r
296 public void DoOnDataBound (EventArgs e)
\r
298 base.OnDataBound (e);
\r
301 public bool OnPageIndexChangingCalled {
\r
302 set { _onPageIndexChangingCalled = value; }
\r
303 get { return _onPageIndexChangingCalled; }
\r
306 public bool OnPageIndexChangedCalled {
\r
307 set { _onPageIndexChangedCalled = value; }
\r
308 get { return _onPageIndexChangedCalled; }
\r
311 protected override void OnPageIndexChanging (FormViewPageEventArgs e) {
\r
312 OnPageIndexChangingCalled = true;
\r
313 base.OnPageIndexChanging (e);
\r
316 protected override void OnPageIndexChanged (EventArgs e) {
\r
317 OnPageIndexChangedCalled = true;
\r
318 base.OnPageIndexChanged (e);
\r
322 class Template : ITemplate
\r
324 bool _instantiated;
\r
326 public bool Instantiated {
\r
327 get { return _instantiated; }
\r
330 #region ITemplate Members
\r
332 public void InstantiateIn (Control container) {
\r
333 _instantiated = true;
\r
340 ArrayList myds = new ArrayList ();
\r
342 public void setup ()
\r
344 myds.Add ("Item1");
\r
345 myds.Add ("Item2");
\r
346 myds.Add ("Item3");
\r
347 myds.Add ("Item4");
\r
348 myds.Add ("Item5");
\r
349 myds.Add ("Item6");
\r
351 WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.FormView.aspx",
\r
353 WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.FormViewTest1.aspx",
\r
354 "FormViewTest1.aspx");
\r
355 WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.FormViewInsertEditDelete.aspx",
\r
356 "FormViewInsertEditDelete.aspx");
\r
358 WebTest.CopyResource (GetType (), "FormView.aspx", "FormView.aspx");
\r
359 WebTest.CopyResource (GetType (), "FormViewTest1.aspx", "FormViewTest1.aspx");
\r
360 WebTest.CopyResource (GetType (), "FormViewInsertEditDelete.aspx", "FormViewInsertEditDelete.aspx");
\r
366 public void Defaults ()
\r
368 Poker p = new Poker ();
\r
369 Assert.IsFalse (p.AllowPaging, "A1");
\r
370 Assert.AreEqual ("", p.BackImageUrl, "A2");
\r
371 Assert.IsNull (p.BottomPagerRow, "A3");
\r
372 Assert.AreEqual ("", p.Caption, "A4");
\r
373 Assert.AreEqual (TableCaptionAlign.NotSet, p.CaptionAlign, "A5");
\r
374 Assert.AreEqual (-1, p.CellPadding, "A6");
\r
375 Assert.AreEqual (0, p.CellSpacing, "A7");
\r
376 Assert.AreEqual (FormViewMode.ReadOnly, p.CurrentMode, "A8");
\r
377 Assert.AreEqual (FormViewMode.ReadOnly, p.DefaultMode, "A9");
\r
378 Assert.IsNotNull (p.DataKeyNames, "A10");
\r
379 Assert.AreEqual (0, p.DataKeyNames.Length, "A10.1");
\r
380 Assert.IsNotNull (p.DataKey, "A11");
\r
381 Assert.AreEqual (0, p.DataKey.Values.Count, "A11.1");
\r
382 Assert.IsNull (p.EditItemTemplate, "A12");
\r
383 Assert.IsNotNull (p.EditRowStyle, "A13");
\r
384 Assert.IsNotNull (p.EmptyDataRowStyle, "A14");
\r
385 Assert.IsNull (p.EmptyDataTemplate, "A15");
\r
386 Assert.AreEqual ("", p.EmptyDataText, "A16");
\r
387 Assert.IsNull (p.FooterRow, "A17");
\r
388 Assert.IsNull (p.FooterTemplate, "A18");
\r
389 Assert.AreEqual ("", p.FooterText, "A19");
\r
390 Assert.IsNotNull (p.FooterStyle, "A20");
\r
391 Assert.AreEqual (GridLines.None, p.GridLines, "A21");
\r
392 Assert.IsNull (p.HeaderRow, "A22");
\r
393 Assert.IsNotNull (p.HeaderStyle, "A23");
\r
394 Assert.IsNull (p.HeaderTemplate, "A24");
\r
395 Assert.AreEqual ("", p.HeaderText, "A25");
\r
396 Assert.AreEqual (HorizontalAlign.NotSet, p.HorizontalAlign, "A26");
\r
397 Assert.IsNull (p.InsertItemTemplate, "A27");
\r
398 Assert.IsNotNull (p.InsertRowStyle, "A28");
\r
399 Assert.IsNull (p.ItemTemplate, "A29");
\r
400 Assert.AreEqual (0, p.PageCount, "A30");
\r
401 Assert.AreEqual (0, p.PageIndex, "A31");
\r
402 Assert.IsNull (p.PagerTemplate, "A32");
\r
403 Assert.IsNull (p.Row, "A33");
\r
404 Assert.IsNotNull (p.RowStyle, "A34");
\r
405 Assert.IsNull (p.SelectedValue, "A35");
\r
406 Assert.IsNull (p.TopPagerRow, "A36");
\r
407 Assert.IsNull (p.DataItem, "A37");
\r
408 Assert.AreEqual (0, p.DataItemCount, "A38");
\r
409 Assert.AreEqual (0, p.DataItemIndex, "A39");
\r
413 public void FormView_AssignToDefaultProperties ()
\r
415 Poker p = new Poker ();
\r
416 MyTemplate customTemplate = new MyTemplate ();
\r
417 TableItemStyle tableStyle = new TableItemStyle ();
\r
418 p.AllowPaging = true;
\r
419 Assert.AreEqual (true, p.AllowPaging, "A40");
\r
420 p.BackImageUrl = "image.jpg";
\r
421 Assert.AreEqual ("image.jpg", p.BackImageUrl, "A41");
\r
422 // ToDo: p.BottomPagerRow
\r
423 p.Caption = "Employee Details";
\r
424 Assert.AreEqual ("Employee Details", p.Caption, "A42");
\r
425 p.CaptionAlign = TableCaptionAlign.Bottom;
\r
426 Assert.AreEqual (TableCaptionAlign.Bottom, p.CaptionAlign, "A43");
\r
427 p.CaptionAlign = TableCaptionAlign.Left;
\r
428 Assert.AreEqual (TableCaptionAlign.Left, p.CaptionAlign, "A44");
\r
429 p.CaptionAlign = TableCaptionAlign.NotSet;
\r
430 Assert.AreEqual (TableCaptionAlign.NotSet, p.CaptionAlign, "A45");
\r
431 p.CaptionAlign = TableCaptionAlign.Right;
\r
432 Assert.AreEqual (TableCaptionAlign.Right, p.CaptionAlign, "A46");
\r
433 p.CaptionAlign = TableCaptionAlign.Top;
\r
434 Assert.AreEqual (TableCaptionAlign.Top, p.CaptionAlign, "A47");
\r
435 p.CellPadding = 10;
\r
436 Assert.AreEqual (10, p.CellPadding, "A48");
\r
437 p.CellSpacing = 20;
\r
438 Assert.AreEqual (20, p.CellSpacing, "A49");
\r
439 Assert.AreEqual (FormViewMode.ReadOnly, p.CurrentMode, "A52");
\r
440 p.DefaultMode = FormViewMode.Edit;
\r
441 Assert.AreEqual (FormViewMode.Edit, p.DefaultMode, "A53");
\r
442 p.DefaultMode = FormViewMode.Insert;
\r
443 Assert.AreEqual (FormViewMode.Insert, p.DefaultMode, "A54");
\r
444 p.DefaultMode = FormViewMode.ReadOnly;
\r
445 Assert.AreEqual (FormViewMode.ReadOnly, p.DefaultMode, "A55");
\r
446 p.EditRowStyle.BackColor = Color.Red;
\r
447 Assert.AreEqual (Color.Red, p.EditRowStyle.BackColor, "A56");
\r
448 p.EmptyDataRowStyle.ForeColor = Color.Purple;
\r
449 Assert.AreEqual (Color.Purple, p.EmptyDataRowStyle.ForeColor, "A57");
\r
450 p.EmptyDataTemplate = customTemplate;
\r
451 Assert.AreEqual (customTemplate, p.EmptyDataTemplate, "A58");
\r
452 p.EmptyDataText = "No data";
\r
453 Assert.AreEqual ("No data", p.EmptyDataText, "A59");
\r
454 p.EditItemTemplate = customTemplate;
\r
455 Assert.AreEqual (customTemplate, p.EditItemTemplate, "A60");
\r
456 p.FooterTemplate = customTemplate;
\r
457 Assert.AreEqual (customTemplate, p.FooterTemplate, "A61");
\r
458 p.FooterText = "Test Footer";
\r
459 Assert.AreEqual ("Test Footer", p.FooterText, "A62");
\r
460 p.FooterStyle.BorderStyle = BorderStyle.Double;
\r
461 Assert.AreEqual (BorderStyle.Double, p.FooterStyle.BorderStyle, "A63");
\r
462 p.GridLines = GridLines.Both;
\r
463 Assert.AreEqual (GridLines.Both, p.GridLines, "A64");
\r
464 p.GridLines = GridLines.Horizontal;
\r
465 Assert.AreEqual (GridLines.Horizontal, p.GridLines, "A65");
\r
466 p.GridLines = GridLines.None;
\r
467 Assert.AreEqual (GridLines.None, p.GridLines, "A66");
\r
468 p.GridLines = GridLines.Vertical;
\r
469 Assert.AreEqual (GridLines.Vertical, p.GridLines, "A67");
\r
470 p.HeaderStyle.HorizontalAlign = HorizontalAlign.Left;
\r
471 Assert.AreEqual (HorizontalAlign.Left, p.HeaderStyle.HorizontalAlign, "A68");
\r
472 p.HeaderTemplate = customTemplate;
\r
473 Assert.AreEqual (customTemplate, p.HeaderTemplate, "A69");
\r
474 p.HeaderText = "Test Header";
\r
475 Assert.AreEqual ("Test Header", p.HeaderText, "A70");
\r
476 p.HorizontalAlign = HorizontalAlign.Center;
\r
477 Assert.AreEqual (HorizontalAlign.Center, p.HorizontalAlign, "A71");
\r
478 p.HorizontalAlign = HorizontalAlign.Justify;
\r
479 Assert.AreEqual (HorizontalAlign.Justify, p.HorizontalAlign, "A72");
\r
480 p.HorizontalAlign = HorizontalAlign.Left;
\r
481 Assert.AreEqual (HorizontalAlign.Left, p.HorizontalAlign, "A73");
\r
482 p.HorizontalAlign = HorizontalAlign.NotSet;
\r
483 Assert.AreEqual (HorizontalAlign.NotSet, p.HorizontalAlign, "A74");
\r
484 p.HorizontalAlign = HorizontalAlign.Right;
\r
485 Assert.AreEqual (HorizontalAlign.Right, p.HorizontalAlign, "A75");
\r
486 p.InsertItemTemplate = customTemplate;
\r
487 Assert.AreEqual (customTemplate, p.InsertItemTemplate, "A76");
\r
488 p.InsertRowStyle.BorderStyle = BorderStyle.Outset;
\r
489 Assert.AreEqual (BorderStyle.Outset, p.InsertRowStyle.BorderStyle, "A77");
\r
490 p.ItemTemplate = customTemplate;
\r
491 Assert.AreEqual (customTemplate, p.ItemTemplate, "A78");
\r
492 p.PagerSettings.FirstPageText = "PagerSettings Test";
\r
493 Assert.AreEqual ("PagerSettings Test", p.PagerSettings.FirstPageText, "A79");
\r
494 p.PagerStyle.BorderStyle = BorderStyle.Groove;
\r
495 Assert.AreEqual (BorderStyle.Groove, p.PagerStyle.BorderStyle, "A80");
\r
496 p.PagerTemplate = customTemplate;
\r
497 Assert.AreEqual (customTemplate, p.PagerTemplate, "A81");
\r
498 p.RowStyle.ForeColor = Color.Plum;
\r
499 Assert.AreEqual (Color.Plum, p.RowStyle.ForeColor, "A82");
\r
503 public void FormView_ItemsProperties ()
\r
505 Poker p = new Poker ();
\r
506 p.Page = new Page ();
\r
507 p.AllowPaging = true;
\r
508 p.DataSource = myds;
\r
510 //Assert.AreEqual (typeof (FormViewPagerRow), (p.BottomPagerRow).GetType (), "BottomPagerRow1");
\r
511 Assert.AreEqual (0, p.BottomPagerRow.ItemIndex, "BottomPagerRow2");
\r
512 Assert.AreEqual (DataControlRowType.Pager, p.BottomPagerRow.RowType, "BottomPagerRow2");
\r
513 Assert.AreEqual ("Item1", p.DataItem, "DataItem");
\r
514 Assert.AreEqual (6, p.DataItemCount, "DataItemCount");
\r
515 Assert.AreEqual (0, p.DataItemIndex, "DataItemIndex");
\r
516 Assert.AreEqual (0, p.DataItemIndex, "DataItemIndex");
\r
517 string[] str = new string[] { "1", "2", "3", "4", "5", "6" };
\r
518 Assert.AreEqual (typeof (DataKey), p.DataKey.GetType (), "DataKey");
\r
519 p.DataKeyNames = str;
\r
520 Assert.AreEqual (str, p.DataKeyNames, "DataKeyNames");
\r
521 p.ChangeMode (FormViewMode.Edit);
\r
522 Assert.AreEqual (FormViewMode.Edit, p.CurrentMode, "CurrentModeEdit");
\r
523 p.ChangeMode (FormViewMode.Insert);
\r
524 Assert.AreEqual (FormViewMode.Insert, p.CurrentMode, "CurrentModeInsert");
\r
529 public void FormView_DefaultProtectedProperties ()
\r
531 Poker fv = new Poker ();
\r
532 Assert.AreEqual (HtmlTextWriterTag.Table, fv.PokerTagKey, "TagKey");
\r
535 // Protected methods
\r
538 public void FormView_CreateChildControls ()
\r
540 Poker fv = new Poker ();
\r
541 fv.DataSource = myds;
\r
542 fv.Page = new Page ();
\r
543 Assert.AreEqual (6, fv.DoCreateChildControls (myds, true), "CreateChildControlFromDS");
\r
544 myds.Add ("item7");
\r
545 Assert.AreEqual (7, fv.DoCreateChildControls (myds, false), "CreateChildControlFromViewState");
\r
546 myds.Remove ("item7");
\r
551 public void FormView_CreateDataSourceSelectArguments ()
\r
553 //Checks the default DataSourceSelectArgument object returned.
\r
554 Poker fv = new Poker ();
\r
555 DataSourceSelectArguments selectArgs = fv.DoCreateDataSourceSelectArguments ();
\r
556 Assert.AreEqual (0, selectArgs.MaximumRows, "CreateDataSourceSelectArguments1");
\r
557 Assert.AreEqual (false, selectArgs.RetrieveTotalRowCount, "CreateDataSourceSelectArguments2");
\r
562 public void FormView_CreateControlStyle ()
\r
564 Poker fv = new Poker ();
\r
565 Style s = fv.DoCreateControlStyle ();
\r
566 Assert.AreEqual (typeof (TableStyle), s.GetType (), "CreateControlStyle1");
\r
567 Assert.AreEqual (GridLines.None, ((TableStyle) s).GridLines, "CreateControlStyle2");
\r
568 Assert.AreEqual ("", ((TableStyle) s).BackImageUrl, "CreateControlStyle3");
\r
569 Assert.AreEqual (0, ((TableStyle) s).CellSpacing, "CreateControlStyle4");
\r
570 Assert.AreEqual (-1, ((TableStyle) s).CellPadding, "CreateControlStyle5");
\r
575 public void FormView_InitializeRow ()
\r
581 public void FormView_InitializePager ()
\r
583 Poker fv = new Poker ();
\r
584 Page page = new Page ();
\r
585 page.Controls.Add (fv);
\r
586 fv.AllowPaging = true;
\r
587 fv.DataSource = myds;
\r
588 Assert.AreEqual (false, fv.isInitializePager, "BeforeInitializePager");
\r
589 Assert.AreEqual (0, fv.PageCount, "BeforeInitializePagerPageCount");
\r
591 Assert.AreEqual (true, fv.isInitializePager, "AfterInitializePager");
\r
592 Assert.AreEqual (6, fv.PageCount, "AfterInitializePagerPageCount");
\r
596 public void FormView_CreateRow ()
\r
598 Poker fv = new Poker ();
\r
599 fv.AllowPaging =true;
\r
600 fv.DataSource = myds;
\r
601 fv.Page = new Page ();
\r
603 FormViewRow row = fv.DoCreateRow (2,DataControlRowType.DataRow ,DataControlRowState.Normal );
\r
604 Assert.AreEqual (2, row.ItemIndex, "CreatedRowItemIndex1");
\r
605 Assert.AreEqual (DataControlRowState.Normal , row.RowState, "CreatedRowState1");
\r
606 Assert.AreEqual (DataControlRowType.DataRow , row.RowType, "CreatedRowType1");
\r
607 row = fv.DoCreateRow (4, DataControlRowType.Footer, DataControlRowState.Edit);
\r
608 Assert.AreEqual (4, row.ItemIndex, "CreatedRowItemIndex2");
\r
609 Assert.AreEqual (DataControlRowState.Edit , row.RowState, "CreatedRowState2");
\r
610 Assert.AreEqual (DataControlRowType.Footer , row.RowType, "CreatedRowType2");
\r
611 //FormViewPagerRow pagerRow = (FormViewPagerRow)fv.DoCreateRow (3, DataControlRowType.Pager , DataControlRowState.Insert);
\r
612 //Assert.AreEqual (3, pagerRow.ItemIndex, "CreatedPageRowItemIndex");
\r
613 //Assert.AreEqual (DataControlRowState.Insert, pagerRow.RowState, "CreatedPageRowState");
\r
614 //Assert.AreEqual (DataControlRowType.Pager, pagerRow.RowType, "CreatedPageRowType");
\r
619 public void FormView_CreateTable ()
\r
621 Poker fv = new Poker ();
\r
622 Table tb = fv.DoCreateTable ();
\r
623 fv.Page = new Page ();
\r
624 Assert.AreEqual ("", tb.BackImageUrl , "CreateTable1");
\r
625 Assert.AreEqual (0, tb.Rows.Count, "CreateTable2");
\r
626 fv.DataSource = myds;
\r
628 fv.ID = "TestFormView";
\r
629 tb = fv.DoCreateTable ();
\r
630 Assert.AreEqual (-1, tb.CellPadding , "CreateTable3");
\r
635 public void FormView_EnsureDataBound ()
\r
637 Poker fv = new Poker ();
\r
638 fv.DataSource = myds;
\r
639 fv.DoOnPreRender (EventArgs.Empty);
\r
640 Assert.AreEqual (true, fv.ensureDataBound, "EnsureDataBound");
\r
645 public void FormView_PerformDataBinding ()
\r
647 Poker fv = new Poker ();
\r
648 fv.Page = new Page ();
\r
649 Assert.AreEqual (0,fv.DataItemCount, "BeforePerformDataBinding");
\r
650 fv.DoPerformDataBinding (myds);
\r
651 Assert.AreEqual (6, fv.DataItemCount, "AfterPerformDataBinding");
\r
655 public void FormView_ExtractRowValues ()
\r
657 Poker fv=new Poker ();
\r
658 fv.ItemTemplate = new MyTemplate ();
\r
659 fv.DataKeyNames = new string[] { "ID", "FName", "LName" };
\r
660 //IOrderedDictionary dict = (IOrderedDictionary) new OrderedDictionary (0x19);
\r
661 //fv.DoExtractRowValues (dict, true);
\r
662 //DataTable ds = CreateDataTable ();
\r
663 //fv.DataSource = ds;
\r
665 //OrderedDictionary fieldsValues = new OrderedDictionary ();
\r
666 //fv.DoExtractRowValues (fieldsValues, true);
\r
667 //Assert.AreEqual (3, fieldsValues.Count, "ExtractRowValues1");
\r
668 //Assert.AreEqual (3, fieldsValues.Keys.Count, "ExtractRowValues2");
\r
669 //Assert.AreEqual (3, fieldsValues.Values.Count, "ExtractRowValues3");
\r
670 //Assert.AreEqual (true, fieldsValues.Contains ("ID"), "ExtractRowValues4");
\r
671 //IDictionaryEnumerator enumerator = fieldsValues.GetEnumerator ();
\r
672 //enumerator.MoveNext ();
\r
673 //Assert.AreEqual ("ID", enumerator.Key, "FieldValue1");
\r
674 //Assert.AreEqual ("1001", enumerator.Value, "FieldValue2");
\r
675 //enumerator.MoveNext ();
\r
676 //Assert.AreEqual ("FName", enumerator.Key, "FieldValue3");
\r
677 //Assert.AreEqual ("Mahesh", enumerator.Value, "FieldValue4");
\r
678 //enumerator.MoveNext ();
\r
679 //Assert.AreEqual ("LName", enumerator.Key, "FieldValue5");
\r
680 //Assert.AreEqual ("Chand", enumerator.Value, "FieldValue6");
\r
685 public void FormView_PrepareControlHierarcy ()
\r
687 Poker fv = new Poker ();
\r
688 fv.Page = new Page ();
\r
689 fv.controlHierarchy = false;
\r
691 Assert.AreEqual (0, fv.Controls.Count, "ControlHierarchy1");
\r
692 Assert.AreEqual (true, fv.controlHierarchy, "ControlHierarchy2");
\r
693 fv.AllowPaging = true;
\r
694 fv.DataSource = myds;
\r
696 fv.controlHierarchy = false;
\r
698 Assert.AreEqual (1, fv.Controls.Count, "ControlHierarchy3");
\r
699 Assert.AreEqual (true, fv.controlHierarchy, "ControlHierarchy4");
\r
707 public void FormView_ChangeMode ()
\r
709 Poker fv = new Poker ();
\r
710 Assert.AreEqual (FormViewMode.ReadOnly, fv.CurrentMode, "ChangeModeDefault");
\r
711 fv.ChangeMode (FormViewMode.Insert);
\r
712 Assert.AreEqual (FormViewMode.Insert, fv.CurrentMode, "ChangeModeInsert");
\r
713 fv.ChangeMode (FormViewMode.Edit);
\r
714 Assert.AreEqual (FormViewMode.Edit, fv.CurrentMode, "ChangeModeEdit");
\r
715 fv.ChangeMode (FormViewMode.ReadOnly);
\r
716 Assert.AreEqual (FormViewMode.ReadOnly, fv.CurrentMode, "ChangeModeReadOnly");
\r
720 public void FormView_PageCount () {
\r
721 Page p = new Page ();
\r
723 Poker fv = new Poker ();
\r
724 p.Controls.Add (fv);
\r
726 ObjectDataSource data = new ObjectDataSource ();
\r
727 data.TypeName = typeof (FormViewDataObject).AssemblyQualifiedName;
\r
728 data.SelectMethod = "Select";
\r
729 p.Controls.Add (data);
\r
731 fv.DataSource = data;
\r
733 Assert.AreEqual (0, fv.PageCount, "PageCount before binding");
\r
737 Assert.AreEqual (3, fv.PageCount, "PageCount after binding");
\r
741 public void FormView_DataKey ()
\r
743 Page p = new Page ();
\r
745 Poker fv = new Poker ();
\r
746 p.Controls.Add (fv);
\r
748 ObjectDataSource data = new ObjectDataSource ();
\r
749 data.TypeName = typeof (FormViewDataObject).AssemblyQualifiedName;
\r
750 data.SelectMethod = "Select";
\r
751 p.Controls.Add (data);
\r
753 fv.DataSource = data;
\r
754 fv.DataKeyNames = new string [] { "ID", "FName" };
\r
756 DataKey key1 = fv.DataKey;
\r
758 Assert.AreEqual (null, key1.Value, "DataKey.Value before binding");
\r
759 Assert.AreEqual (0, key1.Values.Count, "DataKey.Values count before binding");
\r
763 DataKey key2 = fv.DataKey;
\r
764 DataKey key3 = fv.DataKey;
\r
766 Assert.IsFalse (Object.ReferenceEquals (key1, key2), "DataKey returns the same instans");
\r
767 Assert.IsTrue (Object.ReferenceEquals (key2, key3), "DataKey returns the same instans");
\r
769 Assert.AreEqual (1001, key1.Value, "DataKey.Value after binding");
\r
770 Assert.AreEqual (2, key1.Values.Count, "DataKey.Values count after binding");
\r
771 Assert.AreEqual (1001, key1.Values [0], "DataKey.Values[0] after binding");
\r
772 Assert.AreEqual ("Mahesh", key1.Values [1], "DataKey.Values[1] after binding");
\r
774 Poker copy = new Poker ();
\r
775 object state = fv.DoSaveControlState ();
\r
776 copy.DoLoadControlState (state);
\r
778 DataKey key4 = copy.DataKey;
\r
780 Assert.AreEqual (1001, key4.Value, "DataKey.Value from ViewState");
\r
781 Assert.AreEqual (2, key4.Values.Count, "DataKey.Values count from ViewState");
\r
782 Assert.AreEqual (1001, key4.Values [0], "DataKey.Values[0] from ViewState");
\r
783 Assert.AreEqual ("Mahesh", key4.Values [1], "DataKey.Values[1] from ViewState");
\r
787 public void FormView_DataBind ()
\r
789 Poker fv = new Poker ();
\r
790 fv.AllowPaging = true;
\r
791 fv.DataSource = myds;
\r
792 fv.Page = new Page ();
\r
793 Assert.AreEqual (0, fv.PageCount, "BeforeDataBind1");
\r
794 Assert.AreEqual (null, fv.DataItem, "BeforeDataBind2");
\r
796 Assert.AreEqual (6, fv.PageCount, "AfterDataBind1");
\r
797 Assert.AreEqual (6, fv.DataItemCount, "AfterDataBind2");
\r
798 Assert.AreEqual ("Item1", fv.DataItem, "AfterDataBind3");
\r
801 private bool isDeleted = false;
\r
804 public void FormView_DeleteItem ()
\r
806 Poker fv = new Poker ();
\r
807 fv.Page = new Page ();
\r
808 fv.DataSource = myds;
\r
810 Assert.AreEqual (false, isDeleted, "BeforeDeleteItem");
\r
811 fv.ItemDeleting += new FormViewDeleteEventHandler (fv_DeleteingHandler);
\r
813 Assert.AreEqual (true, isDeleted, "BeforeDeleteItem");
\r
817 public void fv_DeleteingHandler (Object sender, FormViewDeleteEventArgs e)
\r
822 private bool insertItem = false;
\r
825 public void FormView_InsertItem ()
\r
827 Poker fv = new Poker ();
\r
828 fv.Page = new Page ();
\r
829 fv.ChangeMode (FormViewMode.Insert);
\r
830 fv.ItemInserting += new FormViewInsertEventHandler (insert_item);
\r
831 Assert.AreEqual (false, insertItem, "BeforeInsertItem");
\r
832 fv.InsertItem (false);
\r
833 Assert.AreEqual (true, insertItem, "AfterInsertItem");
\r
837 public void insert_item (object sender, FormViewInsertEventArgs e)
\r
842 private bool updateItem = false;
\r
844 public void FormView_UpdateItem ()
\r
846 Poker fv = new Poker ();
\r
847 fv.Page = new Page ();
\r
848 fv.DataSource = myds;
\r
850 fv.ChangeMode (FormViewMode.Edit);
\r
851 fv.ItemUpdating += new FormViewUpdateEventHandler (update_item);
\r
852 Assert.AreEqual (false, updateItem, "BeforeUpdateItem");
\r
853 fv.UpdateItem (false);
\r
854 Assert.AreEqual (true, updateItem, "AfterUpdateItem");
\r
858 public void update_item (object sender, FormViewUpdateEventArgs e)
\r
864 public void FormView_IsBindableType ()
\r
866 bool isBindable = false;
\r
867 Poker fv = new Poker ();
\r
868 isBindable = fv.IsBindableType (typeof (Decimal));
\r
869 Assert.AreEqual (true, isBindable, "IsBindableTypeDecimal");
\r
870 isBindable = fv.IsBindableType (typeof (Int32));
\r
871 Assert.AreEqual (true, isBindable, "IsBindableTypeInt32");
\r
872 isBindable = fv.IsBindableType (typeof (String));
\r
873 Assert.AreEqual (true, isBindable, "IsBindableTypeString");
\r
874 isBindable = fv.IsBindableType (typeof (Boolean));
\r
875 Assert.AreEqual (true, isBindable, "IsBindableTypeBoolean");
\r
876 isBindable = fv.IsBindableType (typeof (DateTime));
\r
877 Assert.AreEqual (true, isBindable, "IsBindableTypeDateTime");
\r
878 isBindable = fv.IsBindableType (typeof (Byte));
\r
879 Assert.AreEqual (true, isBindable, "IsBindableTypeByte");
\r
880 isBindable = fv.IsBindableType (typeof (Guid));
\r
881 Assert.AreEqual (true, isBindable, "IsBindableTypeGuid");
\r
882 isBindable = fv.IsBindableType (typeof (MyTemplate));
\r
883 Assert.AreEqual (false, isBindable, "IsBindableTypeMyTemplate");
\r
887 public void FormView_ControlState () {
\r
889 Poker fv = new Poker ();
\r
890 Poker copy = new Poker ();
\r
891 string[] keys = new String[2];
\r
894 fv.DataKeyNames = keys;
\r
895 fv.BackImageUrl = "photo.jpg";
\r
896 fv.DefaultMode = FormViewMode.Insert ;
\r
897 fv.ChangeMode (FormViewMode.Edit);
\r
898 object state = fv.DoSaveControlState ();
\r
899 copy.DoLoadControlState (state);
\r
900 Assert.AreEqual (2, copy.DataKeyNames.Length, "DataKeyNames.Length");
\r
901 Assert.AreEqual ("key1", copy.DataKeyNames[0], "ControlStateDataKeyValue");
\r
902 Assert.AreEqual ("key2", copy.DataKeyNames[1], "ControlStateDataKeyValue2");
\r
903 Assert.AreEqual (FormViewMode.Insert, copy.DefaultMode, "ControlStateDefaultMode");
\r
904 Assert.AreEqual (FormViewMode.Edit, copy.CurrentMode, "ControlStateCurrentMode");
\r
910 public void FormView_ViewState ()
\r
912 Poker fv = new Poker ();
\r
913 Poker copy = new Poker ();
\r
914 fv.AllowPaging = true;
\r
915 fv.HeaderText = "Testing";
\r
916 fv.CssClass = "style.css";
\r
917 object state = fv.SaveState ();
\r
918 copy.LoadState (state);
\r
919 Assert.AreEqual (true, copy.AllowPaging, "ViewStateAllowPaging");
\r
920 Assert.AreEqual ("Testing", copy.HeaderText, "ViewStateHeaderText");
\r
921 Assert.AreEqual ("style.css", copy.CssClass, "ViewStateCssClass");
\r
926 private bool itemCommand;
\r
927 private bool itemCreated;
\r
928 private bool itemDeleted;
\r
929 private bool itemDeleting;
\r
930 private bool itemInserted;
\r
931 private bool itemInserting;
\r
932 private bool itemUpdated;
\r
933 private bool itemUpdating;
\r
934 private bool modeChanged;
\r
935 private bool modeChanging;
\r
936 private bool pageIndexChanged;
\r
937 private bool pageIndexChanging;
\r
938 private int newPageIndex;
\r
940 public void ResetEvents ()
\r
943 itemCommand = false;
\r
944 itemCreated = false;
\r
945 itemDeleted = false;
\r
946 itemDeleting = false;
\r
947 itemInserted = false;
\r
948 itemInserting = false;
\r
949 itemUpdated = false;
\r
950 itemUpdating = false;
\r
951 modeChanged = false;
\r
952 modeChanging = false;
\r
953 pageIndexChanged = false;
\r
954 pageIndexChanging = false;
\r
958 public void FormView_BubbleEvent ()
\r
960 FormViewCommandEventArgs com;
\r
961 Poker fv = new Poker ();
\r
962 Page page = new Page ();
\r
963 Button bt = new Button ();
\r
964 fv.AllowPaging = true;
\r
965 fv.DataSource = myds;
\r
966 page.Controls.Add (fv);
\r
969 fv.ItemCommand += new FormViewCommandEventHandler (fv_ItemCommand);
\r
970 fv.ItemDeleted += new FormViewDeletedEventHandler (fv_ItemDeleted);
\r
972 fv.ItemDeleting += new FormViewDeleteEventHandler (fv_ItemDeleting);
\r
973 com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Delete", null));
\r
974 Assert.AreEqual (false, itemDeleting, "BeforeDeleteCommandBubbleEvent");
\r
975 Assert.AreEqual (false, itemCommand, "BeforeDeleteBubbleEvent");
\r
976 Assert.IsTrue (fv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Delete");
\r
977 Assert.AreEqual (true, itemDeleting, "AfterDeleteBubbleEvent");
\r
978 Assert.AreEqual (true, itemCommand, "AfterDeleteCommandBubbleEvent");
\r
982 itemCommand = false;
\r
983 fv.ItemInserting += new FormViewInsertEventHandler (fv_ItemInserting);
\r
984 fv.ChangeMode (FormViewMode.Insert);
\r
985 com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Insert", null));
\r
986 Assert.AreEqual (false, itemCommand, "BeforeInsertCommandBubbleEvent");
\r
987 Assert.AreEqual (false, itemInserting, "BeforeInsertBubbleEvent");
\r
988 Assert.IsTrue (fv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Insert");
\r
989 Assert.AreEqual (true, itemCommand, "AfterInsertCommandBubbleEvent");
\r
990 Assert.AreEqual (true, itemInserting, "AfterInsertBubbleEvent");
\r
994 itemCommand = false;
\r
995 fv.ItemUpdating += new FormViewUpdateEventHandler (fv_ItemUpdating);
\r
996 fv.ChangeMode (FormViewMode.Edit);
\r
997 com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Update", null));
\r
998 Assert.AreEqual (false, itemUpdating, "BeforeUpdateEvent");
\r
999 Assert.AreEqual (false, itemCommand, "BeforeUpdateCommandEvent");
\r
1000 Assert.IsTrue (fv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Update");
\r
1001 Assert.AreEqual (true, itemCommand, "AfterUpdateCommandBubbleEvent");
\r
1002 Assert.AreEqual (true, itemUpdating, "AfterUpdateBubbleEvent");
\r
1006 itemCommand = false;
\r
1007 fv.ModeChanging += new FormViewModeEventHandler (fv_ModeChanging);
\r
1008 com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Cancel", null));
\r
1009 Assert.AreEqual (false, itemCommand, "BeforeCancelCommandBubbleEvent");
\r
1010 Assert.AreEqual (false, modeChanging, "BeforeCancelBubbleEvent");
\r
1011 Assert.IsTrue (fv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Cancel");
\r
1012 Assert.AreEqual (true, itemCommand, "AfterCancelCommandBubbleEvent");
\r
1013 Assert.AreEqual (true, modeChanging, "AfterCancelBubbleEvent");
\r
1016 itemCommand = false;
\r
1017 modeChanging = false;
\r
1018 com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Edit", null));
\r
1019 Assert.AreEqual (false, itemCommand, "BeforeEditCommandBubbleEvent");
\r
1020 Assert.AreEqual (false, modeChanging, "BeforeEditBubbleEvent");
\r
1021 Assert.IsTrue (fv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Edit");
\r
1022 Assert.AreEqual (true, itemCommand, "AfterEditCommandBubbleEvent");
\r
1023 Assert.AreEqual (true, modeChanging, "AfterEditBubbleEvent");
\r
1026 itemCommand = false;
\r
1027 modeChanging = false;
\r
1028 com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("New", null));
\r
1029 Assert.AreEqual (false, itemCommand, "BeforeNewCommandBubbleEvent");
\r
1030 Assert.AreEqual (false, modeChanging, "BeforeNewBubbleEvent");
\r
1031 Assert.IsTrue (fv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - New");
\r
1032 Assert.AreEqual (true, itemCommand, "AfterNewCommandBubbleEvent");
\r
1033 Assert.AreEqual (true, modeChanging, "AfterNewBubbleEvent");
\r
1035 //Page Index default
\r
1036 itemCommand = false;
\r
1037 fv.PageIndexChanging += new FormViewPageEventHandler (fv_PageIndexChanging);
\r
1038 com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Page", null));
\r
1039 Assert.AreEqual (false, itemCommand, "BeforePageCommandBubbleEvent");
\r
1040 Assert.AreEqual (false, pageIndexChanging, "BeforePageBubbleEvent");
\r
1041 Assert.IsTrue (fv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Page Index default");
\r
1042 Assert.AreEqual (true, itemCommand, "AfterPageCommandBubbleEvent");
\r
1043 Assert.AreEqual (true, pageIndexChanging, "AfterPageBubbleEvent");
\r
1044 Assert.AreEqual (-1, newPageIndex, "PageIndex");
\r
1047 itemCommand = false;
\r
1048 pageIndexChanging = false;
\r
1049 com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Page", "Next"));
\r
1050 Assert.AreEqual (false, itemCommand, "BeforeNextPageCommandBubbleEvent");
\r
1051 Assert.AreEqual (false, pageIndexChanging, "BeforeNextPageBubbleEvent");
\r
1052 Assert.IsTrue (fv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Next Page");
\r
1053 Assert.AreEqual (true, itemCommand, "AfterNextPageCommandBubbleEvent");
\r
1054 Assert.AreEqual (true, pageIndexChanging, "AfterNextPageBubbleEvent");
\r
1055 Assert.AreEqual (1, newPageIndex, "NextPageIndex");
\r
1058 itemCommand = false;
\r
1059 pageIndexChanging = false;
\r
1060 com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Page", "Prev"));
\r
1061 Assert.AreEqual (false, itemCommand, "BeforePrevPageCommandBubbleEvent");
\r
1062 Assert.AreEqual (false, pageIndexChanging, "BeforePrevPageBubbleEvent");
\r
1063 Assert.IsTrue (fv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Prev Page");
\r
1064 Assert.AreEqual (true, itemCommand, "AfterPrevPageCommandBubbleEvent");
\r
1065 Assert.AreEqual (true, pageIndexChanging, "AfterPrevPageBubbleEvent");
\r
1066 Assert.AreEqual (-1, newPageIndex, "PrevPageIndex");
\r
1069 itemCommand = false;
\r
1070 pageIndexChanging = false;
\r
1071 com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Page", "First"));
\r
1072 Assert.AreEqual (false, itemCommand, "BeforeFirstPageCommandBubbleEvent");
\r
1073 Assert.AreEqual (false, pageIndexChanging, "BeforeFirstPageBubbleEvent");
\r
1074 Assert.IsTrue (fv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - First Page");
\r
1075 Assert.AreEqual (true, itemCommand, "AfterFirstPageCommandBubbleEvent");
\r
1076 Assert.AreEqual (true, pageIndexChanging, "AfterFirstPageBubbleEvent");
\r
1077 Assert.AreEqual (0, newPageIndex, "FirstPageIndex");
\r
1080 itemCommand = false;
\r
1081 pageIndexChanging = false;
\r
1082 com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Page", "Last"));
\r
1083 Assert.AreEqual (false, itemCommand, "BeforeLastPageCommandBubbleEvent");
\r
1084 Assert.AreEqual (false, pageIndexChanging, "BeforeLastPageBubbleEvent");
\r
1085 Assert.IsTrue (fv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Last Page");
\r
1086 Assert.AreEqual (true, itemCommand, "AfterLastPageCommandBubbleEvent");
\r
1087 Assert.AreEqual (true, pageIndexChanging, "AfterLastPageBubbleEvent");
\r
1088 Assert.AreEqual (5, newPageIndex, "FirstPageIndex");
\r
1094 public void FormView_Events ()
\r
1097 Poker fv = new Poker ();
\r
1098 fv.Page = new Page ();
\r
1099 fv.Init += new EventHandler (fv_Init);
\r
1100 fv.ItemCommand += new FormViewCommandEventHandler (fv_ItemCommand);
\r
1101 fv.ItemCreated += new EventHandler (fv_ItemCreated);
\r
1102 fv.ItemDeleted += new FormViewDeletedEventHandler (fv_ItemDeleted);
\r
1103 fv.ItemDeleting += new FormViewDeleteEventHandler (fv_ItemDeleting);
\r
1104 fv.ItemInserted += new FormViewInsertedEventHandler (fv_ItemInserted);
\r
1105 fv.ItemInserting += new FormViewInsertEventHandler (fv_ItemInserting);
\r
1106 fv.ItemUpdated += new FormViewUpdatedEventHandler (fv_ItemUpdated);
\r
1107 fv.ItemUpdating += new FormViewUpdateEventHandler (fv_ItemUpdating);
\r
1108 fv.ModeChanged += new EventHandler (fv_ModeChanged);
\r
1109 fv.ModeChanging += new FormViewModeEventHandler (fv_ModeChanging);
\r
1110 fv.PageIndexChanged += new EventHandler (fv_PageIndexChanged);
\r
1111 fv.PageIndexChanging += new FormViewPageEventHandler (fv_PageIndexChanging);
\r
1113 Assert.AreEqual (false, init, "BeforeInit");
\r
1114 fv.DoOnInit (new EventArgs ());
\r
1115 Assert.AreEqual (true, init, "AfterInit");
\r
1116 Assert.AreEqual (false, itemCommand, "BeforeItemCommandEvent");
\r
1117 Button bt = new Button ();
\r
1118 fv.DoOnItemCommand (new FormViewCommandEventArgs (bt, new CommandEventArgs ("", null)));
\r
1119 Assert.AreEqual (true, itemCommand, "AfterItemCommandEvent");
\r
1120 Assert.AreEqual (false, itemCreated, "BeforeItemCreatedEvent");
\r
1121 fv.DoOnItemCreated (new EventArgs ());
\r
1122 Assert.AreEqual (true, itemCreated, "AfterItemCreatedEvent");
\r
1123 Assert.AreEqual (false, itemDeleted, "BeforeItemDeletedEvent");
\r
1124 fv.DoOnItemDeleted (new FormViewDeletedEventArgs (3, new Exception ()));
\r
1125 Assert.AreEqual (true, itemDeleted, "AfterItemDeletedEvent");
\r
1126 Assert.AreEqual (false, itemDeleting, "BeforeItemDeletingEvent");
\r
1127 fv.DoOnItemDeleting (new FormViewDeleteEventArgs (1));
\r
1128 Assert.AreEqual (true, itemDeleting, "AfterItemDeletingEvent");
\r
1129 Assert.AreEqual (false, itemInserted, "BeforeItemInsertedEvent");
\r
1130 fv.DoOnItemInserted (new FormViewInsertedEventArgs (2, new Exception ()));
\r
1131 Assert.AreEqual (true, itemInserted, "AfterItemInsetedEvent");
\r
1132 Assert.AreEqual (false, itemInserting, "BeforeItemInsertingEvent");
\r
1133 fv.DoOnItemInserting (new FormViewInsertEventArgs (bt));
\r
1134 Assert.AreEqual (true, itemInserting, "AfterItemInsetingEvent");
\r
1135 Assert.AreEqual (false, itemUpdated, "BeforeItemUpdatedEvent");
\r
1136 fv.DoOnItemUpdated (new FormViewUpdatedEventArgs (1, new Exception ()));
\r
1137 Assert.AreEqual (true, itemUpdated, "AfterItemUpdatedEvent");
\r
1138 Assert.AreEqual (false, itemUpdating, "BeforeItemUpdatingEvent");
\r
1139 fv.DoOnItemUpdating (new FormViewUpdateEventArgs (bt));
\r
1140 Assert.AreEqual (true, itemUpdating, "AfterItemUpdatingEvent");
\r
1141 Assert.AreEqual (false, modeChanged, "BeforeModeChangedEvent");
\r
1142 fv.DoOnModeChanged (new EventArgs ());
\r
1143 Assert.AreEqual (true, modeChanged, "AfterModeChangedEvent");
\r
1144 Assert.AreEqual (false, modeChanging, "BeforeModeChangingEvent");
\r
1145 fv.DoOnModeChanging (new FormViewModeEventArgs (FormViewMode.Edit, true));
\r
1146 Assert.AreEqual (true, modeChanging, "AfterModeChangingEvent");
\r
1147 Assert.AreEqual (false, pageIndexChanged, "BeforePageIndexChangedEvent");
\r
1148 fv.DoOnPageIndexChanged (new EventArgs ());
\r
1149 Assert.AreEqual (true, pageIndexChanged, "AfterPageIndexChangedEvent");
\r
1150 Assert.AreEqual (false, pageIndexChanging, "BeforePageIndexChangingEvent");
\r
1151 fv.DoOnPageIndexChanging (new FormViewPageEventArgs (1));
\r
1152 Assert.AreEqual (true, pageIndexChanging, "AfterPageIndexChangingEvent");
\r
1154 private void fv_Init (object sender, EventArgs e)
\r
1159 private void fv_ItemCommand (object sender, FormViewCommandEventArgs e)
\r
1161 itemCommand = true;
\r
1164 private void fv_ItemCreated (object sender, EventArgs e)
\r
1166 itemCreated = true;
\r
1169 private void fv_ItemDeleted (object sender, FormViewDeletedEventArgs e)
\r
1171 itemDeleted = true;
\r
1174 private void fv_ItemDeleting (object sender, FormViewDeleteEventArgs e)
\r
1176 itemDeleting = true;
\r
1179 private void fv_ItemInserted (object sender, FormViewInsertedEventArgs e)
\r
1181 itemInserted = true;
\r
1184 private void fv_ItemInserting (object sender, FormViewInsertEventArgs e)
\r
1186 itemInserting = true;
\r
1189 private void fv_ItemUpdated (object sender, FormViewUpdatedEventArgs e)
\r
1191 itemUpdated = true;
\r
1194 private void fv_ItemUpdating (object sender, FormViewUpdateEventArgs e)
\r
1196 itemUpdating = true;
\r
1199 private void fv_ModeChanged (object sender, EventArgs e)
\r
1201 modeChanged = true;
\r
1204 private void fv_ModeChanging (object sender, FormViewModeEventArgs e)
\r
1206 modeChanging = true;
\r
1209 private void fv_PageIndexChanged (object sender, EventArgs e)
\r
1211 pageIndexChanged = true;
\r
1213 private void fv_PageIndexChanging (object sender, FormViewPageEventArgs e)
\r
1215 pageIndexChanging = true;
\r
1216 newPageIndex = e.NewPageIndex;
\r
1217 e.NewPageIndex = -1;
\r
1222 [ExpectedException (typeof (ArgumentOutOfRangeException))]
\r
1223 public void CellPaddingException ()
\r
1225 Poker p = new Poker ();
\r
1226 p.CellPadding = -2;
\r
1230 [ExpectedException (typeof (ArgumentOutOfRangeException))]
\r
1231 public void CellSpacingException ()
\r
1233 Poker p = new Poker ();
\r
1234 p.CellSpacing = -5;
\r
1238 [ExpectedException (typeof (ArgumentOutOfRangeException))]
\r
1239 public void PageIndexException ()
\r
1241 Poker p = new Poker ();
\r
1246 [ExpectedException (typeof (HttpException))]
\r
1247 public void InsertItemException ()
\r
1249 Poker p = new Poker ();
\r
1250 p.InsertItem (true);
\r
1254 [ExpectedException (typeof (HttpException))]
\r
1255 public void UpdateItemException ()
\r
1257 Poker p = new Poker ();
\r
1258 p.UpdateItem (true);
\r
1263 [Category ("NotDotNet")] //TODO
\r
1264 public void PageIndex ()
\r
1266 ObjectDataSource ds = new ObjectDataSource ();
\r
1267 ds.ID = "ObjectDataSource1";
\r
1268 ds.TypeName = "System.Guid";
\r
1269 ds.SelectMethod = "ToByteArray";
\r
1270 Page p = new Page ();
\r
1271 Poker f = new Poker ();
\r
1274 p.Controls.Add (f);
\r
1275 p.Controls.Add (ds);
\r
1276 f.DataSourceID = "ObjectDataSource1";
\r
1277 f.DoConfirmInitState ();
\r
1278 f.DoOnPreRender (EventArgs.Empty);
\r
1279 object cur = f.DataItem;
\r
1281 Assert.IsTrue (cur != f.DataItem, "#01");
\r
1283 CommandEventArgs cargs = new CommandEventArgs ("Page", "Prev");
\r
1284 FormViewCommandEventArgs fvargs = new FormViewCommandEventArgs (f, cargs);
\r
1285 f.DoOnBubbleEvent (f, fvargs);
\r
1286 Assert.IsTrue (f.OnPageIndexChangingCalled, "#02");
\r
1287 Assert.IsTrue (f.OnPageIndexChangedCalled, "#03");
\r
1288 f.OnPageIndexChangingCalled = false;
\r
1289 f.OnPageIndexChangedCalled = false;
\r
1291 f.DoOnBubbleEvent (f, fvargs);
\r
1292 Assert.IsTrue (f.OnPageIndexChangingCalled, "#04");
\r
1293 Assert.IsFalse (f.OnPageIndexChangedCalled, "#05");
\r
1294 f.OnPageIndexChangingCalled = false;
\r
1295 f.OnPageIndexChangedCalled = false;
\r
1297 f.PageIndex = f.PageCount - 1;
\r
1298 cargs = new CommandEventArgs ("Page", "Next");
\r
1299 fvargs = new FormViewCommandEventArgs (f, cargs);
\r
1300 f.DoOnBubbleEvent (f, fvargs);
\r
1301 Assert.IsTrue (f.OnPageIndexChangingCalled, "#06");
\r
1302 Assert.IsFalse (f.OnPageIndexChangedCalled, "#07");
\r
1303 f.OnPageIndexChangingCalled = false;
\r
1304 f.OnPageIndexChangedCalled = false;
\r
1308 public void PageCount ()
\r
1310 ObjectDataSource ds = new ObjectDataSource ();
\r
1311 ds.ID = "ObjectDataSource1";
\r
1312 ds.TypeName = "System.Guid";
\r
1313 ds.SelectMethod = "ToByteArray";
\r
1314 Page p = new Page ();
\r
1315 Poker f = new Poker ();
\r
1318 p.Controls.Add (f);
\r
1319 p.Controls.Add (ds);
\r
1320 f.DataSourceID = "ObjectDataSource1";
\r
1321 f.DoConfirmInitState ();
\r
1322 f.DoOnPreRender (EventArgs.Empty);
\r
1324 Assert.AreEqual (16, f.PageCount, "#01");
\r
1328 public void InsertTemplate () {
\r
1329 ObjectDataSource ds = new ObjectDataSource ();
\r
1330 ds.ID = "ObjectDataSource1";
\r
1331 ds.TypeName = "System.Collections.ArrayList";
\r
1332 ds.SelectMethod = "ToArray";
\r
1333 Page p = new Page ();
\r
1334 Poker f = new Poker ();
\r
1335 Template itemTemplate = new Template ();
\r
1336 Template emptyTemplate = new Template ();
\r
1337 Template insertTemplate = new Template ();
\r
1338 f.ItemTemplate = itemTemplate;
\r
1339 f.EmptyDataTemplate = emptyTemplate;
\r
1340 f.InsertItemTemplate = insertTemplate;
\r
1341 f.DefaultMode = FormViewMode.Insert;
\r
1344 p.Controls.Add (f);
\r
1345 p.Controls.Add (ds);
\r
1346 f.DataSourceID = "ObjectDataSource1";
\r
1347 f.DoConfirmInitState ();
\r
1348 f.DoOnPreRender (EventArgs.Empty);
\r
1350 f.AllowPaging = true;
\r
1351 Assert.IsFalse(itemTemplate.Instantiated, "#01");
\r
1352 Assert.IsFalse(emptyTemplate.Instantiated, "#02");
\r
1353 Assert.IsTrue(insertTemplate.Instantiated, "#03");
\r
1356 [TestFixtureTearDown]
\r
1357 public void TearDown ()
\r
1359 Thread.Sleep (100);
\r
1360 //WebTest.Unload ();
\r
1363 //[TestFixtureStartUp]
\r
1364 //public void StartUp ()
\r
1366 // WebTest.CopyResource (GetType (), "FormView.aspx", "FormView.aspx");
\r
1370 [Category("NunitWeb")]
\r
1371 public void FormViewCssClass ()
\r
1373 string res = new WebTest ("FormView.aspx").Run ();
\r
1374 Assert.IsTrue (Regex.IsMatch (
\r
1375 res, ".*<table[^>]*class=\"[^\"]*test1[^\"]*\"[^>]*>.*",
\r
1376 RegexOptions.IgnoreCase|RegexOptions.Singleline),
\r
1377 "check that <table class=\"test1\"> is found. Actual: "+res);
\r
1378 Assert.IsFalse (Regex.IsMatch (
\r
1379 res, ".*<table[^>]*class=\"\"[^>]*>.*",
\r
1380 RegexOptions.IgnoreCase|RegexOptions.Singleline),
\r
1381 "check that <table class=\"\"> is not found. Actual: "+res);
\r
1388 public void FormView_RenderSimpleTemplate()
\r
1390 string RenderedPageHtml = new WebTest ("FormViewTest1.aspx").Run ();
\r
1391 string newHtmlValue = RenderedPageHtml.Substring (RenderedPageHtml.IndexOf ("test1") + 5, RenderedPageHtml.IndexOf ("test2") - RenderedPageHtml.IndexOf ("test1") - 5);
\r
1392 string origHtmlValue = @" <table cellspacing=""2"" cellpadding=""3"" rules=""all"" border=""1"" id=""FormView1"" style=""background-color:#DEBA84;border-color:#DEBA84;border-width:1px;border-style:None;"">
\r
1393 <tr style=""color:#8C4510;background-color:#FFF7E7;"">
\r
1394 <td colspan=""2"">
\r
1395 <span id=""FormView1_Label1"">1</span>
\r
1397 </tr><tr align=""center"" style=""color:#8C4510;"">
\r
1398 <td colspan=""2""><table border=""0"">
\r
1400 <td><span>1</span></td><td><a href=""javascript:__doPostBack('FormView1','Page$2')"" style=""color:#8C4510;"">2</a></td><td><a href=""javascript:__doPostBack('FormView1','Page$3')"" style=""color:#8C4510;"">3</a></td><td><a href=""javascript:__doPostBack('FormView1','Page$4')"" style=""color:#8C4510;"">4</a></td><td><a href=""javascript:__doPostBack('FormView1','Page$5')"" style=""color:#8C4510;"">5</a></td><td><a href=""javascript:__doPostBack('FormView1','Page$6')"" style=""color:#8C4510;"">6</a></td>
\r
1406 HtmlDiff.AssertAreEqual (origHtmlValue, newHtmlValue, "RenderSimpleTemplate");
\r
1411 public void FormView_RenderFooterAndPager()
\r
1413 string RenderedPageHtml = new WebTest ("FormViewTest1.aspx").Run ();
\r
1414 string newHtmlValue = RenderedPageHtml.Substring (RenderedPageHtml.IndexOf ("test2") + 5, RenderedPageHtml.IndexOf ("test3") - RenderedPageHtml.IndexOf ("test2") - 5);
\r
1415 string origHtmlValue = @" <table cellspacing=""0"" cellpadding=""4"" border=""0"" id=""FormView2"" style=""color:#333333;border-collapse:collapse;"">
\r
1416 <tr style=""color:#333333;background-color:#F7F6F3;"">
\r
1417 <td colspan=""2"">
\r
1418 <span id=""FormView2_Label2"">1</span>
\r
1420 </tr><tr style=""color:White;background-color:#5D7B9D;font-weight:bold;"">
\r
1421 <td colspan=""2"">
\r
1422 <span id=""FormView2_Label3"">Footer Template Test</span>
\r
1424 </tr><tr align=""center"" style=""color:White;background-color:#284775;"">
\r
1425 <td colspan=""2"">
\r
1426 <input type=""submit"" name=""FormView2$ctl01$Button1"" value=""Prev Item"" id=""FormView2_ctl01_Button1"" />
\r
1427 <input type=""submit"" name=""FormView2$ctl01$Button2"" value=""Next Item"" id=""FormView2_ctl01_Button2"" />
\r
1428 <input type=""submit"" name=""FormView2$ctl01$Button3"" value=""First Item"" id=""FormView2_ctl01_Button3"" />
\r
1429 <input type=""submit"" name=""FormView2$ctl01$Button4"" value=""Last Item"" id=""FormView2_ctl01_Button4"" />
\r
1434 HtmlDiff.AssertAreEqual (origHtmlValue, newHtmlValue, "FormView_RenderFooterAndPager");
\r
1438 [Category ("NunitWeb")]
\r
1439 public void FormView_RenderWithHeader()
\r
1441 string RenderedPageHtml = new WebTest ("FormViewTest1.aspx").Run ();
\r
1442 string newHtmlValue = RenderedPageHtml.Substring (RenderedPageHtml.IndexOf ("test4") + 5, RenderedPageHtml.IndexOf ("endtest") - RenderedPageHtml.IndexOf ("test4") - 5);
\r
1443 string origHtmlValue = @" <table cellspacing=""10"" cellpadding=""3"" align=""Right"" rules=""all"" border=""1"" id=""FormView4"" style=""background-color:White;border-color:#CCCCCC;border-width:1px;border-style:None;"">
\r
1444 <tr align=""left"" style=""color:White;background-color:#006699;font-weight:bold;"">
\r
1445 <td colspan=""2"">Using Header Text property</td>
\r
1446 </tr><tr align=""center"" style=""color:#000066;background-color:Maroon;"">
\r
1447 <td colspan=""2"">Using Footer Text property</td>
\r
1448 </tr><tr align=""left"" style=""color:#000066;background-color:LightGrey;"">
\r
1449 <td colspan=""2"">
\r
1450 <a id=""FormView4_ctl01_LinkButton1"" href=""javascript:__doPostBack('FormView4$ctl01$LinkButton1','')"">Next</a>
\r
1451 <a id=""FormView4_ctl01_LinkButton2"" href=""javascript:__doPostBack('FormView4$ctl01$LinkButton2','')"">Prev</a>
\r
1452 <span id=""FormView4_ctl01_Label7"">Page Index: 0</span>
\r
1456 HtmlDiff.AssertAreEqual (origHtmlValue, newHtmlValue, "RenderingDefaultPaging");
\r
1461 [Category ("NunitWeb")]
\r
1462 public void FormView_Render ()
\r
1464 string RenderedPageHtml = new WebTest ("FormViewTest1.aspx").Run ();
\r
1465 string newHtmlValue = RenderedPageHtml.Substring (RenderedPageHtml.IndexOf ("test3") + 5, RenderedPageHtml.IndexOf ("test4") - RenderedPageHtml.IndexOf ("test3") - 5);
\r
1466 string origHtmlValue = @" <table cellspacing=""0"" cellpadding=""2"" border=""0"" id=""FormView3"" style=""color:Black;background-color:LightGoldenrodYellow;border-color:Tan;border-width:1px;border-style:solid;border-collapse:collapse;"">
\r
1467 <tr align=""center"" valign=""top"" style=""color:#C00000;background-color:Tan;font-weight:bold;"">
\r
1468 <td colspan=""2"">
\r
1469 <span id=""FormView3_Label5"">Header Template Test</span>
\r
1472 <td colspan=""2"">
\r
1473 <span id=""FormView3_Label4"">1</span>
\r
1475 </tr><tr align=""center"" style=""color:DarkSlateBlue;background-color:PaleGoldenrod;"">
\r
1476 <td colspan=""2""><table border=""0"">
\r
1478 <td><span>1</span></td><td>
\r
1479 <a href=""javascript:__doPostBack('FormView3','Page$2')"" style=""color:DarkSlateBlue;"">2</a></td><td>
\r
1480 <a href=""javascript:__doPostBack('FormView3','Page$3')"" style=""color:DarkSlateBlue;"">3</a></td><td>
\r
1481 <a href=""javascript:__doPostBack('FormView3','Page$4')"" style=""color:DarkSlateBlue;"">4</a></td><td>
\r
1482 <a href=""javascript:__doPostBack('FormView3','Page$5')"" style=""color:DarkSlateBlue;"">5</a></td><td>
\r
1483 <a href=""javascript:__doPostBack('FormView3','Page$6')"" style=""color:DarkSlateBlue;"">6</a></td>
\r
1484 </tr><tr align=""right"" style=""color:#FFC0FF;background-color:Tan;"">
\r
1485 <td colspan=""2"">
\r
1486 <span id=""FormView3_Label6"">FormView Footer</span>
\r
1492 HtmlDiff.AssertAreEqual (origHtmlValue, newHtmlValue, "RenderingDefaultPaging");
\r
1497 [Category ("NotDotNet")] // becaue Naming container: use "FormView1$....." for DotNet
\r
1498 public void FormView_EditPostback ()
\r
1500 WebTest t = new WebTest ("FormViewInsertEditDelete.aspx");
\r
1501 string pageHTML = t.Run ();
\r
1502 string newHtml = pageHTML.Substring (pageHTML.IndexOf ("start") + 5, pageHTML.IndexOf ("end") - pageHTML.IndexOf ("start") - 5);
\r
1503 string origHtml = @" <div>
\r
1505 <table cellspacing=""0"" border=""0"" id=""FormView1"" style=""border-collapse:collapse;"">
\r
1507 <td colspan=""2"">
\r
1508 <span id=""FormView1_ID"">1001</span>
\r
1509 <span id=""FormView1_LName"">Chand</span>
\r
1510 <span id=""FormView1_FName"">Mahesh</span>
\r
1511 <a id=""FormView1_EditButton"" href=""javascript:__doPostBack('FormView1$EditButton','')"">Edit</a>
\r
1512 <a id=""FormView1_NewButton"" href=""javascript:__doPostBack('FormView1$NewButton','')"">New</a>
\r
1513 <a id=""FormView1_DeleteButton"" href=""javascript:__doPostBack('FormView1$DeleteButton','')"">Delete</a>
\r
1516 <td colspan=""2""><table border=""0"">
\r
1518 <td><span>1</span></td><td><a href=""javascript:__doPostBack('FormView1','Page$2')"">2</a></td><td><a href=""javascript:__doPostBack('FormView1','Page$3')"">3</a></td>
\r
1524 HtmlDiff.AssertAreEqual (origHtml, newHtml, "BeforeEditPostback");
\r
1526 //Edit button postback (change to edit mode - buttons "Update" and "Cancel" should appear.
\r
1528 FormRequest fr = new FormRequest (t.Response, "form1");
\r
1529 fr.Controls.Add ("__EVENTTARGET");
\r
1530 fr.Controls.Add ("__EVENTARGUMENT");
\r
1531 fr.Controls["__EVENTTARGET"].Value = "FormView1:EditButton";
\r
1532 fr.Controls["__EVENTARGUMENT"].Value = "";
\r
1534 pageHTML = t.Run ();
\r
1535 newHtml = pageHTML.Substring (pageHTML.IndexOf ("start") + 5, pageHTML.IndexOf ("end") - pageHTML.IndexOf ("start") - 5);
\r
1536 origHtml = @" <div>
\r
1538 <table cellspacing=""0"" border=""0"" id=""FormView1"" style=""border-collapse:collapse;"">
\r
1540 <td colspan=""2"">
\r
1541 Enter First Name:<input name=""FormView1$FNameEdit"" type=""text"" value=""Mahesh"" id=""FormView1_FNameEdit"" /><br />
\r
1542 Enter Last Name:<input name=""FormView1$LNameEdit"" type=""text"" value=""Chand"" id=""FormView1_LNameEdit"" /><br />
\r
1543 <a id=""FormView1_UpdateButton"" href=""javascript:__doPostBack('FormView1$UpdateButton','')"">Update</a>
\r
1544 <a id=""FormView1_CancelUpdateButton"" href=""javascript:__doPostBack('FormView1$CancelUpdateButton','')"">Cancel</a>
\r
1547 <td colspan=""2""><table border=""0"">
\r
1549 <td><span>1</span></td><td><a href=""javascript:__doPostBack('FormView1','Page$2')"">2</a></td><td><a href=""javascript:__doPostBack('FormView1','Page$3')"">3</a></td>
\r
1555 HtmlDiff.AssertAreEqual (origHtml, newHtml, "AfterEditPostback");
\r
1557 //Update record postback
\r
1559 fr = new FormRequest (t.Response, "form1");
\r
1560 fr.Controls.Add ("__EVENTTARGET");
\r
1561 fr.Controls.Add ("__EVENTARGUMENT");
\r
1562 fr.Controls.Add ("FormView1:FNameEdit");
\r
1563 fr.Controls.Add ("FormView1:LNameEdit");
\r
1564 fr.Controls["__EVENTTARGET"].Value = "FormView1:UpdateButton";
\r
1565 fr.Controls["__EVENTARGUMENT"].Value = "";
\r
1566 fr.Controls["FormView1:FNameEdit"].Value = "Merav";
\r
1567 fr.Controls["FormView1:LNameEdit"].Value = "Test";
\r
1569 pageHTML = t.Run ();
\r
1570 newHtml = pageHTML.Substring (pageHTML.IndexOf ("start") + 5, pageHTML.IndexOf ("end") - pageHTML.IndexOf ("start") - 5);
\r
1573 <table cellspacing=""0"" border=""0"" id=""FormView1"" style=""border-collapse:collapse;"">
\r
1575 <td colspan=""2"">
\r
1576 <span id=""FormView1_ID"">1001</span>
\r
1577 <span id=""FormView1_LName"">Test</span>
\r
1578 <span id=""FormView1_FName"">Merav</span>
\r
1579 <a id=""FormView1_EditButton"" href=""javascript:__doPostBack('FormView1$EditButton','')"">Edit</a>
\r
1580 <a id=""FormView1_NewButton"" href=""javascript:__doPostBack('FormView1$NewButton','')"">New</a>
\r
1581 <a id=""FormView1_DeleteButton"" href=""javascript:__doPostBack('FormView1$DeleteButton','')"">Delete</a>
\r
1584 <td colspan=""2""><table border=""0"">
\r
1586 <td><span>1</span></td><td><a href=""javascript:__doPostBack('FormView1','Page$2')"">2</a></td><td><a href=""javascript:__doPostBack('FormView1','Page$3')"">3</a></td>
\r
1592 HtmlDiff.AssertAreEqual (origHtml, newHtml, "AfterUpdatePostback");
\r
1594 //Postback to return to Edit mode
\r
1595 fr = new FormRequest (t.Response, "form1");
\r
1596 fr.Controls.Add ("__EVENTTARGET");
\r
1597 fr.Controls.Add ("__EVENTARGUMENT");
\r
1598 fr.Controls["__EVENTTARGET"].Value = "FormView1:EditButton";
\r
1599 fr.Controls["__EVENTARGUMENT"].Value = "";
\r
1601 pageHTML = t.Run ();
\r
1602 newHtml = pageHTML.Substring (pageHTML.IndexOf ("start") + 5, pageHTML.IndexOf ("end") - pageHTML.IndexOf ("start") - 5);
\r
1603 Assert.AreEqual (true, pageHTML.Contains ("Merav"), "EditModePostback1");
\r
1604 Assert.AreEqual (true, pageHTML.Contains ("CancelUpdateButton"), "EditModePostback2");
\r
1606 // Cancel edited record postback
\r
1607 fr = new FormRequest (t.Response, "form1");
\r
1608 fr.Controls.Add ("__EVENTTARGET");
\r
1609 fr.Controls.Add ("__EVENTARGUMENT");
\r
1610 fr.Controls.Add ("FormView1:FNameEdit");
\r
1611 fr.Controls.Add ("FormView1:LNameEdit");
\r
1612 fr.Controls["FormView1:FNameEdit"].Value = "EditFirstName";
\r
1613 fr.Controls["FormView1:LNameEdit"].Value = "EditLastName";
\r
1614 fr.Controls["__EVENTTARGET"].Value = "FormView1:CancelUpdateButton";
\r
1615 fr.Controls["__EVENTARGUMENT"].Value = "";
\r
1617 pageHTML = t.Run ();
\r
1618 newHtml = pageHTML.Substring (pageHTML.IndexOf ("start") + 5, pageHTML.IndexOf ("end") - pageHTML.IndexOf ("start") - 5);
\r
1619 origHtml = @" <div>
\r
1621 <table cellspacing=""0"" border=""0"" id=""FormView1"" style=""border-collapse:collapse;"">
\r
1623 <td colspan=""2"">
\r
1624 <span id=""FormView1_ID"">1001</span>
\r
1625 <span id=""FormView1_LName"">Test</span>
\r
1626 <span id=""FormView1_FName"">Merav</span>
\r
1627 <a id=""FormView1_EditButton"" href=""javascript:__doPostBack('FormView1$EditButton','')"">Edit</a>
\r
1628 <a id=""FormView1_NewButton"" href=""javascript:__doPostBack('FormView1$NewButton','')"">New</a>
\r
1629 <a id=""FormView1_DeleteButton"" href=""javascript:__doPostBack('FormView1$DeleteButton','')"">Delete</a>
\r
1632 <td colspan=""2""><table border=""0"">
\r
1634 <td><span>1</span></td><td><a href=""javascript:__doPostBack('FormView1','Page$2')"">2</a></td><td><a href=""javascript:__doPostBack('FormView1','Page$3')"">3</a></td>
\r
1640 HtmlDiff.AssertAreEqual (origHtml, newHtml, "CancelEditedRecordPostback");
\r
1645 [Category ("NotDotNet")] // becaue Naming container: use "FormView1$....." for DotNet
\r
1646 public void FormView_InsertPostback ()
\r
1648 WebTest t = new WebTest ("FormViewInsertEditDelete.aspx");
\r
1649 string pageHTML = t.Run ();
\r
1650 Assert.AreEqual (true, pageHTML.Contains ("1001"), "BeforeInsert1");
\r
1651 Assert.AreEqual (true, pageHTML.Contains ("Mahesh"), "BeforeInsert2");
\r
1652 Assert.AreEqual (true, pageHTML.Contains ("Chand"), "BeforeInsert3");
\r
1653 Assert.AreEqual (false, pageHTML.Contains ("Page$4"), "BeforeInsert4");
\r
1654 FormRequest fr = new FormRequest (t.Response, "form1");
\r
1655 fr.Controls.Add ("__EVENTTARGET");
\r
1656 fr.Controls.Add ("__EVENTARGUMENT");
\r
1657 fr.Controls["__EVENTTARGET"].Value = "FormView1:NewButton";
\r
1658 fr.Controls["__EVENTARGUMENT"].Value = "";
\r
1660 pageHTML = t.Run ();
\r
1661 string newHtml = pageHTML.Substring (pageHTML.IndexOf ("start") + 5, pageHTML.IndexOf ("end") - pageHTML.IndexOf ("start") - 5);
\r
1662 string origHtml = @" <div>
\r
1664 <table cellspacing=""0"" border=""0"" id=""FormView1"" style=""border-collapse:collapse;"">
\r
1666 <td colspan=""2"">
\r
1668 <input name=""FormView1$IDInsert"" type=""text"" id=""FormView1_IDInsert"" /><br />
\r
1669 Insert First Name:
\r
1670 <input name=""FormView1$FNameInsert"" type=""text"" id=""FormView1_FNameInsert"" />
\r
1672 Insert Last Name:
\r
1673 <input name=""FormView1$LNameInsert"" type=""text"" id=""FormView1_LNameInsert"" />
\r
1674 <a id=""FormView1_InsertButton"" href=""javascript:__doPostBack('FormView1$InsertButton','')"">Insert</a>
\r
1675 <a id=""FormView1_CancelInsertButton"" href=""javascript:__doPostBack('FormView1$CancelInsertButton','')"">Cancel</a>
\r
1680 HtmlDiff.AssertAreEqual (origHtml, newHtml, "InsertPostback");
\r
1682 //Insert new record
\r
1684 fr = new FormRequest (t.Response, "form1");
\r
1685 fr.Controls.Add ("__EVENTTARGET");
\r
1686 fr.Controls.Add ("__EVENTARGUMENT");
\r
1687 fr.Controls.Add ("FormView1:IDInsert");
\r
1688 fr.Controls.Add ("FormView1:FNameInsert");
\r
1689 fr.Controls.Add ("FormView1:LNameInsert");
\r
1690 fr.Controls["FormView1:IDInsert"].Value = "33";
\r
1691 fr.Controls["FormView1:FNameInsert"].Value = "InsertFirstName";
\r
1692 fr.Controls["FormView1:LNameInsert"].Value ="InsertLastName";
\r
1693 fr.Controls["__EVENTTARGET"].Value = "FormView1:InsertButton";
\r
1694 fr.Controls["__EVENTARGUMENT"].Value = "";
\r
1696 pageHTML = t.Run ();
\r
1697 Assert.AreEqual (true, pageHTML.Contains ("1001"), "AfterInsert1");
\r
1698 Assert.AreEqual (true, pageHTML.Contains ("Mahesh"), "AfterInsert2");
\r
1699 Assert.AreEqual (true, pageHTML.Contains ("Chand"), "AfterInsert3");
\r
1700 Assert.AreEqual (true, pageHTML.Contains ("Page$4"), "AfterInsert4");
\r
1702 //Checking that the inserted record appears on page 4.
\r
1704 fr = new FormRequest (t.Response, "form1");
\r
1705 fr.Controls.Add ("__EVENTTARGET");
\r
1706 fr.Controls.Add ("__EVENTARGUMENT");
\r
1707 fr.Controls["__EVENTTARGET"].Value = "FormView1";
\r
1708 fr.Controls["__EVENTARGUMENT"].Value = "Page$4";
\r
1710 pageHTML = t.Run ();
\r
1711 Assert.AreEqual (true, pageHTML.Contains ("33"), "AfterInsert1");
\r
1712 Assert.AreEqual (true, pageHTML.Contains ("InsertLastName"), "AfterInsert2");
\r
1713 Assert.AreEqual (true, pageHTML.Contains ("InsertFirstName"), "AfterInsert3");
\r
1718 [Category ("NotDotNet")] // becaue Naming container: use "FormView1$DeleteButton" for DotNet
\r
1719 public void FormView_DeleteAndEmptyTemplatePostback ()
\r
1721 WebTest t = new WebTest ("FormViewInsertEditDelete.aspx");
\r
1722 string pageHTML = t.Run ();
\r
1724 Assert.AreEqual (true, pageHTML.Contains ("1001"), "BeforeDelete1");
\r
1725 Assert.AreEqual (true, pageHTML.Contains ("Mahesh"), "BeforeDelete2");
\r
1726 Assert.AreEqual (true, pageHTML.Contains ("Chand"), "BeforeDelete3");
\r
1727 Assert.AreEqual (true, pageHTML.Contains ("Page$3"), "BeforeDelete4");
\r
1728 //Delete First Item
\r
1729 FormRequest fr = new FormRequest (t.Response, "form1");
\r
1730 fr.Controls.Add ("__EVENTTARGET");
\r
1731 fr.Controls.Add ("__EVENTARGUMENT");
\r
1732 fr.Controls["__EVENTTARGET"].Value = "FormView1:DeleteButton";
\r
1733 fr.Controls["__EVENTARGUMENT"].Value = "";
\r
1735 pageHTML = t.Run ();
\r
1736 Assert.AreEqual (true, pageHTML.Contains ("1002"), "AfterFirstDelete1");
\r
1737 Assert.AreEqual (true, pageHTML.Contains ("Talmadge"), "AfterFirstDelete2");
\r
1738 Assert.AreEqual (true, pageHTML.Contains ("Melanie"), "AfterFirstDelete3");
\r
1739 Assert.AreEqual (true, pageHTML.Contains ("Page$2"), "AfterFirstDelete4");
\r
1740 Assert.AreEqual (false, pageHTML.Contains ("Page$3"), "AfterFirstDelete5");
\r
1742 //Delete second item
\r
1744 fr = new FormRequest (t.Response, "form1");
\r
1745 fr.Controls.Add ("__EVENTTARGET");
\r
1746 fr.Controls.Add ("__EVENTARGUMENT");
\r
1747 fr.Controls["__EVENTTARGET"].Value = "FormView1:DeleteButton";
\r
1748 fr.Controls["__EVENTARGUMENT"].Value = "";
\r
1750 pageHTML = t.Run ();
\r
1751 Assert.AreEqual (true, pageHTML.Contains ("1003"), "AfterSecondDelete1");
\r
1752 Assert.AreEqual (true, pageHTML.Contains ("Bansal"), "AfterSecondDelete2");
\r
1753 Assert.AreEqual (true, pageHTML.Contains ("Vinay"), "AfterSecondDelete3");
\r
1754 Assert.AreEqual (false, pageHTML.Contains ("Page$2"), "AfterSecondDelete4");
\r
1756 //Delete last item and checking that the EmptyDataTemplate appears.
\r
1758 fr = new FormRequest (t.Response, "form1");
\r
1759 fr.Controls.Add ("__EVENTTARGET");
\r
1760 fr.Controls.Add ("__EVENTARGUMENT");
\r
1761 fr.Controls["__EVENTTARGET"].Value = "FormView1:DeleteButton";
\r
1762 fr.Controls["__EVENTARGUMENT"].Value = "";
\r
1764 pageHTML = t.Run ();
\r
1765 Assert.AreEqual (true, pageHTML.Contains ("FormView1_Label1"), "EmptyTemplateTest1");
\r
1766 Assert.AreEqual (true, pageHTML.Contains ("The Database is empty"), "EmptyTemplateTest2");
\r
1770 public void FormView_CurrentMode () {
\r
1771 FormView view = new FormView ();
\r
1772 view.DefaultMode = FormViewMode.Insert;
\r
1773 Assert.AreEqual (FormViewMode.Insert, view.CurrentMode, "FormView_CurrentMode#1");
\r
1774 view.ChangeMode (FormViewMode.Edit);
\r
1775 Assert.AreEqual (FormViewMode.Edit, view.CurrentMode, "FormView_CurrentMode#2");
\r
1779 public void FormView_CreateDataSourceSelectArguments2 () {
\r
1780 DataSourceView view;
\r
1781 Page p = new Page ();
\r
1783 Poker dv = new Poker ();
\r
1784 p.Controls.Add (dv);
\r
1786 ObjectDataSource data = new ObjectDataSource ();
\r
1787 data.TypeName = typeof (DataSourceObject).AssemblyQualifiedName;
\r
1788 data.SelectMethod = "GetList";
\r
1789 data.SortParameterName = "sortExpression";
\r
1790 DataSourceSelectArguments arg;
\r
1791 p.Controls.Add (data);
\r
1793 dv.DataSource = data;
\r
1796 arg = dv.DoCreateDataSourceSelectArguments ();
\r
1797 Assert.IsTrue (arg.Equals (DataSourceSelectArguments.Empty), "Default");
\r
1799 dv.AllowPaging = true;
\r
1801 arg = dv.DoCreateDataSourceSelectArguments ();
\r
1802 view = dv.DoGetData ();
\r
1803 Assert.IsFalse (view.CanPage);
\r
1804 Assert.IsTrue (view.CanRetrieveTotalRowCount);
\r
1805 Assert.IsTrue (arg.Equals (DataSourceSelectArguments.Empty), "AllowPaging = true, CanPage = false, CanRetrieveTotalRowCount = true");
\r
1807 // make DataSourceView.CanPage = true
\r
1808 data.EnablePaging = true;
\r
1810 arg = dv.DoCreateDataSourceSelectArguments ();
\r
1811 view = dv.DoGetData ();
\r
1812 Assert.IsTrue (view.CanPage);
\r
1813 Assert.IsFalse (view.CanRetrieveTotalRowCount);
\r
1814 Assert.IsTrue (arg.Equals (new DataSourceSelectArguments (2, -1)), "AllowPaging = true, CanPage = true, CanRetrieveTotalRowCount = false");
\r
1816 dv.AllowPaging = false;
\r
1817 arg = dv.DoCreateDataSourceSelectArguments ();
\r
1818 Assert.IsTrue (arg.Equals (DataSourceSelectArguments.Empty), "AllowPaging = false, CanPage = true, CanRetrieveTotalRowCount = false");
\r
1820 // make DataSourceView.CanRetrieveTotalRowCount = true
\r
1821 data.SelectCountMethod = "GetCount";
\r
1823 arg = dv.DoCreateDataSourceSelectArguments ();
\r
1824 Assert.IsTrue (arg.Equals (DataSourceSelectArguments.Empty), "AllowPaging = false, CanPage = true, CanRetrieveTotalRowCount = true");
\r
1826 dv.AllowPaging = true;
\r
1827 arg = dv.DoCreateDataSourceSelectArguments ();
\r
1828 DataSourceSelectArguments arg1 = new DataSourceSelectArguments (2, 1);
\r
1829 arg1.RetrieveTotalRowCount = true;
\r
1830 view = dv.DoGetData ();
\r
1831 Assert.IsTrue (view.CanPage);
\r
1832 Assert.IsTrue (view.CanRetrieveTotalRowCount);
\r
1833 Assert.IsTrue (arg.Equals (arg1), "AllowPaging = true, CanPage = true, CanRetrieveTotalRowCount = true");
\r
1837 public void FormView_GetPostBackOptions () {
\r
1838 FormView fv = new FormView ();
\r
1839 fv.Page = new Page ();
\r
1840 IButtonControl btn = new Button ();
\r
1841 btn.CausesValidation = false;
\r
1842 Assert.IsFalse (btn.CausesValidation);
\r
1843 Assert.AreEqual (String.Empty, btn.CommandName);
\r
1844 Assert.AreEqual (String.Empty, btn.CommandArgument);
\r
1845 Assert.AreEqual (String.Empty, btn.PostBackUrl);
\r
1846 Assert.AreEqual (String.Empty, btn.ValidationGroup);
\r
1847 PostBackOptions options = ((IPostBackContainer) fv).GetPostBackOptions (btn);
\r
1848 Assert.IsFalse (options.PerformValidation);
\r
1849 Assert.IsFalse (options.AutoPostBack);
\r
1850 Assert.IsFalse (options.TrackFocus);
\r
1851 Assert.IsTrue (options.ClientSubmit);
\r
1852 Assert.IsTrue (options.RequiresJavaScriptProtocol);
\r
1853 Assert.AreEqual ("$", options.Argument);
\r
1854 Assert.AreEqual (null, options.ActionUrl);
\r
1855 Assert.AreEqual (null, options.ValidationGroup);
\r
1856 Assert.IsTrue (object.ReferenceEquals (options.TargetControl, fv));
\r
1858 btn.ValidationGroup = "VG";
\r
1859 btn.CommandName = "CMD";
\r
1860 btn.CommandArgument = "ARG";
\r
1861 btn.PostBackUrl = "Page.aspx";
\r
1862 Assert.IsFalse (btn.CausesValidation);
\r
1863 Assert.AreEqual ("CMD", btn.CommandName);
\r
1864 Assert.AreEqual ("ARG", btn.CommandArgument);
\r
1865 Assert.AreEqual ("Page.aspx", btn.PostBackUrl);
\r
1866 Assert.AreEqual ("VG", btn.ValidationGroup);
\r
1867 options = ((IPostBackContainer) fv).GetPostBackOptions (btn);
\r
1868 Assert.IsFalse (options.PerformValidation);
\r
1869 Assert.IsFalse (options.AutoPostBack);
\r
1870 Assert.IsFalse (options.TrackFocus);
\r
1871 Assert.IsTrue (options.ClientSubmit);
\r
1872 Assert.IsTrue (options.RequiresJavaScriptProtocol);
\r
1873 Assert.AreEqual ("CMD$ARG", options.Argument);
\r
1874 Assert.AreEqual (null, options.ActionUrl);
\r
1875 Assert.AreEqual (null, options.ValidationGroup);
\r
1879 [ExpectedException (typeof (InvalidOperationException))]
\r
1880 public void FormView_GetPostBackOptions_CausesValidation () {
\r
1881 FormView fv = new FormView ();
\r
1882 fv.Page = new Page ();
\r
1883 IButtonControl btn = new Button ();
\r
1884 Assert.IsTrue (btn.CausesValidation);
\r
1885 Assert.AreEqual (String.Empty, btn.CommandName);
\r
1886 Assert.AreEqual (String.Empty, btn.CommandArgument);
\r
1887 Assert.AreEqual (String.Empty, btn.PostBackUrl);
\r
1888 Assert.AreEqual (String.Empty, btn.ValidationGroup);
\r
1889 PostBackOptions options = ((IPostBackContainer) fv).GetPostBackOptions (btn);
\r
1893 [ExpectedException (typeof (ArgumentNullException))]
\r
1894 public void FormView_GetPostBackOptions_Null_Argument () {
\r
1895 FormView fv = new FormView ();
\r
1896 fv.Page = new Page ();
\r
1897 PostBackOptions options = ((IPostBackContainer) fv).GetPostBackOptions (null);
\r
1901 public class TestMyData
\r
1903 static IList<int> str = (IList<int>) new int[] { 1, 2, 3, 4, 5, 6 };
\r
1906 public static IList<int> GetMyList ()
\r
1911 public static int UpdateList (int index,int value)
\r
1913 str[index] = value;
\r
1914 return str[index];
\r
1917 public static int InsertList (int value)
\r
1923 public static void DeleteList (int value)
\r
1925 str.Remove (value);
\r
1930 public class MyTemplate : ITemplate
\r
1933 Label l = new Label ();
\r
1934 #region ITemplate Members
\r
1936 public void InstantiateIn (Control container)
\r
1938 container.Controls.Add (l);
\r
1942 public void SetDataItem (object value)
\r
1944 l.Text = value.ToString ();
\r
1950 public class FormViewDataObject
\r
1953 public static DataTable ds = CreateDataTable();
\r
1955 public static DataTable Select()
\r
1964 public static DataTable Delete(string ID, string FName, string LName)
\r
1967 DataRow dr = ds.Rows.Find(ID);
\r
1972 ds.Rows.Remove(dr);
\r
1982 public static DataTable Insert(string ID, string FName, string LName)
\r
1985 DataRow dr = ds.NewRow();
\r
1987 dr["FName"] = FName;
\r
1988 dr["LName"] = LName;
\r
1995 public static DataTable Update(string ID, string FName, string LName)
\r
1997 DataRow dr = ds.Rows.Find(ID);
\r
2000 Label lbl = new Label();
\r
2001 lbl.Text = "ID doesn't exist ";
\r
2004 dr["FName"] = FName;
\r
2005 dr["LName"] = LName;
\r
2012 public static DataTable CreateDataTable()
\r
2015 DataTable aTable = new DataTable("A");
\r
2019 // Create ID column and add to the DataTable.
\r
2021 dtCol = new DataColumn();
\r
2022 dtCol.DataType = Type.GetType("System.Int32");
\r
2023 dtCol.ColumnName = "ID";
\r
2024 dtCol.AutoIncrement = true;
\r
2025 dtCol.Caption = "ID";
\r
2026 dtCol.ReadOnly = true;
\r
2027 dtCol.Unique = true;
\r
2028 aTable.Columns.Add(dtCol);
\r
2032 // Create Name column and add to the table
\r
2034 dtCol = new DataColumn();
\r
2035 dtCol.DataType = Type.GetType("System.String");
\r
2036 dtCol.ColumnName = "FName";
\r
2037 dtCol.AutoIncrement = false;
\r
2038 dtCol.Caption = "First Name";
\r
2039 dtCol.ReadOnly = false;
\r
2040 dtCol.Unique = false;
\r
2041 aTable.Columns.Add(dtCol);
\r
2045 // Create Last Name column and add to the table.
\r
2047 dtCol = new DataColumn();
\r
2048 dtCol.DataType = Type.GetType("System.String");
\r
2049 dtCol.ColumnName = "LName";
\r
2050 dtCol.AutoIncrement = false;
\r
2051 dtCol.Caption = "Last Name";
\r
2052 dtCol.ReadOnly = false;
\r
2053 dtCol.Unique = false;
\r
2054 aTable.Columns.Add(dtCol);
\r
2058 // Create three rows to the table
\r
2060 dtRow = aTable.NewRow();
\r
2061 dtRow["ID"] = 1001;
\r
2062 dtRow["FName"] = "Mahesh";
\r
2063 dtRow["LName"] = "Chand";
\r
2064 aTable.Rows.Add(dtRow);
\r
2066 dtRow = aTable.NewRow();
\r
2067 dtRow["ID"] = 1002;
\r
2068 dtRow["FName"] = "Melanie";
\r
2069 dtRow["LName"] = "Talmadge";
\r
2070 aTable.Rows.Add(dtRow);
\r
2072 dtRow = aTable.NewRow();
\r
2073 dtRow["ID"] = 1003;
\r
2074 dtRow["FName"] = "Vinay";
\r
2075 dtRow["LName"] = "Bansal";
\r
2076 aTable.Rows.Add(dtRow);
\r
2078 aTable.PrimaryKey = new DataColumn[] { aTable.Columns["ID"] };
\r