FormViewTest.cs 72 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021
  1. //
  2. // Tests for System.Web.UI.WebControls.FormView.cs
  3. //
  4. // Author:
  5. // Chris Toshok ([email protected])
  6. //
  7. //
  8. // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
  9. //
  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:
  17. //
  18. // The above copyright notice and this permission notice shall be
  19. // included in all copies or substantial portions of the Software.
  20. //
  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.
  28. //
  29. #if NET_2_0
  30. using NUnit.Framework;
  31. using System;
  32. using System.Data;
  33. using System.IO;
  34. using System.Drawing;
  35. using System.Collections;
  36. using System.Collections.Generic;
  37. using System.Collections.Specialized;
  38. using System.Globalization;
  39. using System.Web;
  40. using System.Web.UI;
  41. using System.Web.UI.HtmlControls;
  42. using System.Web.UI.WebControls;
  43. using MonoTests.SystemWeb.Framework;
  44. using MonoTests.stand_alone.WebHarness;
  45. using System.Text.RegularExpressions;
  46. using System.Reflection;
  47. using System.Threading;
  48. namespace MonoTests.System.Web.UI.WebControls
  49. {
  50. [TestFixture]
  51. public class FormViewTest {
  52. public class DataSourceObject
  53. {
  54. public static List<string> GetList (string sortExpression, int startRowIndex, int maximumRows) {
  55. return GetList ();
  56. }
  57. public static List<string> GetList (int startRowIndex, int maximumRows) {
  58. return GetList ();
  59. }
  60. public static List<string> GetList (string sortExpression) {
  61. return GetList ();
  62. }
  63. public static List<string> GetList () {
  64. List<string> list = new List<string> ();
  65. list.Add ("Norway");
  66. list.Add ("Sweden");
  67. list.Add ("France");
  68. list.Add ("Italy");
  69. list.Add ("Israel");
  70. list.Add ("Russia");
  71. return list;
  72. }
  73. public static int GetCount () {
  74. return GetList ().Count;
  75. }
  76. }
  77. public class Poker : FormView {
  78. public bool isInitializePager=false;
  79. public bool ensureDataBound=false;
  80. public bool controlHierarchy=false;
  81. bool _onPageIndexChangingCalled = false;
  82. bool _onPageIndexChangedCalled = false;
  83. public Poker () {
  84. TrackViewState ();
  85. }
  86. public object SaveState () {
  87. return SaveViewState ();
  88. }
  89. public void LoadState (object state) {
  90. LoadViewState (state);
  91. }
  92. public HtmlTextWriterTag PokerTagKey
  93. {
  94. get { return base.TagKey; }
  95. }
  96. public int DoCreateChildControls (IEnumerable source,bool dataBind)
  97. {
  98. return CreateChildControls (source, dataBind);
  99. }
  100. public Style DoCreateControlStyle ()
  101. {
  102. return base.CreateControlStyle ();
  103. }
  104. public DataSourceSelectArguments DoCreateDataSourceSelectArguments ()
  105. {
  106. return CreateDataSourceSelectArguments ();
  107. }
  108. public DataSourceView DoGetData ()
  109. {
  110. return GetData ();
  111. }
  112. public FormViewRow DoCreateRow (int itemIndex,DataControlRowType rowType,DataControlRowState rowState)
  113. {
  114. return CreateRow( itemIndex, rowType,rowState);
  115. }
  116. public Table DoCreateTable ()
  117. {
  118. return CreateTable ();
  119. }
  120. protected override void EnsureDataBound ()
  121. {
  122. base.EnsureDataBound ();
  123. ensureDataBound = true;
  124. }
  125. public void DoExtractRowValues (IOrderedDictionary filedValues, bool includeKeys)
  126. {
  127. base.ExtractRowValues (filedValues, includeKeys);
  128. }
  129. protected override void InitializePager (FormViewRow row, PagedDataSource pageData)
  130. {
  131. base.InitializePager (row, pageData);
  132. isInitializePager = true;
  133. }
  134. public void DoInitializeRow (FormViewRow row)
  135. {
  136. InitializeRow (row);
  137. }
  138. public void DoLoadControlState (object savedState)
  139. {
  140. LoadControlState (savedState);
  141. }
  142. public void DoLoadViewState (object savedState)
  143. {
  144. LoadViewState (savedState);
  145. }
  146. public bool DoOnBubbleEvent (object source, EventArgs e)
  147. {
  148. return OnBubbleEvent (source, e);
  149. }
  150. public void DoOnInit (EventArgs e)
  151. {
  152. OnInit (e);
  153. }
  154. public void DoOnItemCommand (FormViewCommandEventArgs e)
  155. {
  156. OnItemCommand (e);
  157. }
  158. public void DoOnItemCreated (EventArgs e)
  159. {
  160. OnItemCreated (e);
  161. }
  162. public void DoOnItemDeleted (FormViewDeletedEventArgs e)
  163. {
  164. OnItemDeleted (e);
  165. }
  166. public void DoOnItemDeleting (FormViewDeleteEventArgs e)
  167. {
  168. OnItemDeleting (e);
  169. }
  170. public void DoOnItemInserted (FormViewInsertedEventArgs e)
  171. {
  172. OnItemInserted (e);
  173. }
  174. public void DoOnItemInserting (FormViewInsertEventArgs e)
  175. {
  176. OnItemInserting (e);
  177. }
  178. public void DoOnItemUpdated (FormViewUpdatedEventArgs e)
  179. {
  180. OnItemUpdated (e);
  181. }
  182. public void DoOnItemUpdating (FormViewUpdateEventArgs e)
  183. {
  184. OnItemUpdating (e);
  185. }
  186. public void DoOnModeChanged (EventArgs e )
  187. {
  188. OnModeChanged (e);
  189. }
  190. public void DoOnModeChanging (FormViewModeEventArgs e)
  191. {
  192. OnModeChanging (e);
  193. }
  194. public void DoOnPageIndexChanged (EventArgs e)
  195. {
  196. OnPageIndexChanged (e);
  197. }
  198. public void DoOnPageIndexChanging (FormViewPageEventArgs e)
  199. {
  200. OnPageIndexChanging (e);
  201. }
  202. public void DoPerformDataBinding (IEnumerable data)
  203. {
  204. PerformDataBinding (data);
  205. }
  206. protected override void PrepareControlHierarchy ()
  207. {
  208. base.PrepareControlHierarchy ();
  209. controlHierarchy = true;
  210. }
  211. public void DoRaisePostBackEvent (string eventArgument)
  212. {
  213. RaisePostBackEvent (eventArgument);
  214. }
  215. public string Render ()
  216. {
  217. StringWriter sw = new StringWriter ();
  218. HtmlTextWriter tw = new HtmlTextWriter (sw);
  219. Render (tw);
  220. return sw.ToString ();
  221. }
  222. public object DoSaveControlState ()
  223. {
  224. return SaveControlState ();
  225. }
  226. public void DoConfirmInitState ()
  227. {
  228. base.ConfirmInitState ();
  229. }
  230. public void DoOnPreRender (EventArgs e)
  231. {
  232. base.OnPreRender (e);
  233. }
  234. public void DoOnDataBinding (EventArgs e)
  235. {
  236. base.OnDataBinding (e);
  237. }
  238. public void DoOnDataBound (EventArgs e)
  239. {
  240. base.OnDataBound (e);
  241. }
  242. public bool OnPageIndexChangingCalled {
  243. set { _onPageIndexChangingCalled = value; }
  244. get { return _onPageIndexChangingCalled; }
  245. }
  246. public bool OnPageIndexChangedCalled {
  247. set { _onPageIndexChangedCalled = value; }
  248. get { return _onPageIndexChangedCalled; }
  249. }
  250. protected override void OnPageIndexChanging (FormViewPageEventArgs e) {
  251. OnPageIndexChangingCalled = true;
  252. base.OnPageIndexChanging (e);
  253. }
  254. protected override void OnPageIndexChanged (EventArgs e) {
  255. OnPageIndexChangedCalled = true;
  256. base.OnPageIndexChanged (e);
  257. }
  258. }
  259. class Template : ITemplate
  260. {
  261. bool _instantiated;
  262. public bool Instantiated {
  263. get { return _instantiated; }
  264. }
  265. #region ITemplate Members
  266. public void InstantiateIn (Control container) {
  267. _instantiated = true;
  268. }
  269. #endregion
  270. }
  271. ArrayList myds = new ArrayList ();
  272. [TestFixtureSetUp]
  273. public void setup ()
  274. {
  275. myds.Add ("Item1");
  276. myds.Add ("Item2");
  277. myds.Add ("Item3");
  278. myds.Add ("Item4");
  279. myds.Add ("Item5");
  280. myds.Add ("Item6");
  281. #if VISUAL_STUDIO
  282. WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.FormView.aspx",
  283. "FormView.aspx");
  284. WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.FormViewTest1.aspx",
  285. "FormViewTest1.aspx");
  286. WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.FormViewInsertEditDelete.aspx",
  287. "FormViewInsertEditDelete.aspx");
  288. #else
  289. WebTest.CopyResource (GetType (), "FormView.aspx", "FormView.aspx");
  290. WebTest.CopyResource (GetType (), "FormViewTest1.aspx", "FormViewTest1.aspx");
  291. WebTest.CopyResource (GetType (), "FormViewInsertEditDelete.aspx", "FormViewInsertEditDelete.aspx");
  292. #endif
  293. }
  294. [Test]
  295. public void Defaults ()
  296. {
  297. Poker p = new Poker ();
  298. Assert.IsFalse (p.AllowPaging, "A1");
  299. Assert.AreEqual ("", p.BackImageUrl, "A2");
  300. Assert.IsNull (p.BottomPagerRow, "A3");
  301. Assert.AreEqual ("", p.Caption, "A4");
  302. Assert.AreEqual (TableCaptionAlign.NotSet, p.CaptionAlign, "A5");
  303. Assert.AreEqual (-1, p.CellPadding, "A6");
  304. Assert.AreEqual (0, p.CellSpacing, "A7");
  305. Assert.AreEqual (FormViewMode.ReadOnly, p.CurrentMode, "A8");
  306. Assert.AreEqual (FormViewMode.ReadOnly, p.DefaultMode, "A9");
  307. Assert.IsNotNull (p.DataKeyNames, "A10");
  308. Assert.AreEqual (0, p.DataKeyNames.Length, "A10.1");
  309. Assert.IsNotNull (p.DataKey, "A11");
  310. Assert.AreEqual (0, p.DataKey.Values.Count, "A11.1");
  311. Assert.IsNull (p.EditItemTemplate, "A12");
  312. Assert.IsNotNull (p.EditRowStyle, "A13");
  313. Assert.IsNotNull (p.EmptyDataRowStyle, "A14");
  314. Assert.IsNull (p.EmptyDataTemplate, "A15");
  315. Assert.AreEqual ("", p.EmptyDataText, "A16");
  316. Assert.IsNull (p.FooterRow, "A17");
  317. Assert.IsNull (p.FooterTemplate, "A18");
  318. Assert.AreEqual ("", p.FooterText, "A19");
  319. Assert.IsNotNull (p.FooterStyle, "A20");
  320. Assert.AreEqual (GridLines.None, p.GridLines, "A21");
  321. Assert.IsNull (p.HeaderRow, "A22");
  322. Assert.IsNotNull (p.HeaderStyle, "A23");
  323. Assert.IsNull (p.HeaderTemplate, "A24");
  324. Assert.AreEqual ("", p.HeaderText, "A25");
  325. Assert.AreEqual (HorizontalAlign.NotSet, p.HorizontalAlign, "A26");
  326. Assert.IsNull (p.InsertItemTemplate, "A27");
  327. Assert.IsNotNull (p.InsertRowStyle, "A28");
  328. Assert.IsNull (p.ItemTemplate, "A29");
  329. Assert.AreEqual (0, p.PageCount, "A30");
  330. Assert.AreEqual (0, p.PageIndex, "A31");
  331. Assert.IsNull (p.PagerTemplate, "A32");
  332. Assert.IsNull (p.Row, "A33");
  333. Assert.IsNotNull (p.RowStyle, "A34");
  334. Assert.IsNull (p.SelectedValue, "A35");
  335. Assert.IsNull (p.TopPagerRow, "A36");
  336. Assert.IsNull (p.DataItem, "A37");
  337. Assert.AreEqual (0, p.DataItemCount, "A38");
  338. Assert.AreEqual (0, p.DataItemIndex, "A39");
  339. }
  340. [Test]
  341. public void FormView_AssignToDefaultProperties ()
  342. {
  343. Poker p = new Poker ();
  344. MyTemplate customTemplate = new MyTemplate ();
  345. TableItemStyle tableStyle = new TableItemStyle ();
  346. p.AllowPaging = true;
  347. Assert.AreEqual (true, p.AllowPaging, "A40");
  348. p.BackImageUrl = "image.jpg";
  349. Assert.AreEqual ("image.jpg", p.BackImageUrl, "A41");
  350. // ToDo: p.BottomPagerRow
  351. p.Caption = "Employee Details";
  352. Assert.AreEqual ("Employee Details", p.Caption, "A42");
  353. p.CaptionAlign = TableCaptionAlign.Bottom;
  354. Assert.AreEqual (TableCaptionAlign.Bottom, p.CaptionAlign, "A43");
  355. p.CaptionAlign = TableCaptionAlign.Left;
  356. Assert.AreEqual (TableCaptionAlign.Left, p.CaptionAlign, "A44");
  357. p.CaptionAlign = TableCaptionAlign.NotSet;
  358. Assert.AreEqual (TableCaptionAlign.NotSet, p.CaptionAlign, "A45");
  359. p.CaptionAlign = TableCaptionAlign.Right;
  360. Assert.AreEqual (TableCaptionAlign.Right, p.CaptionAlign, "A46");
  361. p.CaptionAlign = TableCaptionAlign.Top;
  362. Assert.AreEqual (TableCaptionAlign.Top, p.CaptionAlign, "A47");
  363. p.CellPadding = 10;
  364. Assert.AreEqual (10, p.CellPadding, "A48");
  365. p.CellSpacing = 20;
  366. Assert.AreEqual (20, p.CellSpacing, "A49");
  367. Assert.AreEqual (FormViewMode.ReadOnly, p.CurrentMode, "A52");
  368. p.DefaultMode = FormViewMode.Edit;
  369. Assert.AreEqual (FormViewMode.Edit, p.DefaultMode, "A53");
  370. p.DefaultMode = FormViewMode.Insert;
  371. Assert.AreEqual (FormViewMode.Insert, p.DefaultMode, "A54");
  372. p.DefaultMode = FormViewMode.ReadOnly;
  373. Assert.AreEqual (FormViewMode.ReadOnly, p.DefaultMode, "A55");
  374. p.EditRowStyle.BackColor = Color.Red;
  375. Assert.AreEqual (Color.Red, p.EditRowStyle.BackColor, "A56");
  376. p.EmptyDataRowStyle.ForeColor = Color.Purple;
  377. Assert.AreEqual (Color.Purple, p.EmptyDataRowStyle.ForeColor, "A57");
  378. p.EmptyDataTemplate = customTemplate;
  379. Assert.AreEqual (customTemplate, p.EmptyDataTemplate, "A58");
  380. p.EmptyDataText = "No data";
  381. Assert.AreEqual ("No data", p.EmptyDataText, "A59");
  382. p.EditItemTemplate = customTemplate;
  383. Assert.AreEqual (customTemplate, p.EditItemTemplate, "A60");
  384. p.FooterTemplate = customTemplate;
  385. Assert.AreEqual (customTemplate, p.FooterTemplate, "A61");
  386. p.FooterText = "Test Footer";
  387. Assert.AreEqual ("Test Footer", p.FooterText, "A62");
  388. p.FooterStyle.BorderStyle = BorderStyle.Double;
  389. Assert.AreEqual (BorderStyle.Double, p.FooterStyle.BorderStyle, "A63");
  390. p.GridLines = GridLines.Both;
  391. Assert.AreEqual (GridLines.Both, p.GridLines, "A64");
  392. p.GridLines = GridLines.Horizontal;
  393. Assert.AreEqual (GridLines.Horizontal, p.GridLines, "A65");
  394. p.GridLines = GridLines.None;
  395. Assert.AreEqual (GridLines.None, p.GridLines, "A66");
  396. p.GridLines = GridLines.Vertical;
  397. Assert.AreEqual (GridLines.Vertical, p.GridLines, "A67");
  398. p.HeaderStyle.HorizontalAlign = HorizontalAlign.Left;
  399. Assert.AreEqual (HorizontalAlign.Left, p.HeaderStyle.HorizontalAlign, "A68");
  400. p.HeaderTemplate = customTemplate;
  401. Assert.AreEqual (customTemplate, p.HeaderTemplate, "A69");
  402. p.HeaderText = "Test Header";
  403. Assert.AreEqual ("Test Header", p.HeaderText, "A70");
  404. p.HorizontalAlign = HorizontalAlign.Center;
  405. Assert.AreEqual (HorizontalAlign.Center, p.HorizontalAlign, "A71");
  406. p.HorizontalAlign = HorizontalAlign.Justify;
  407. Assert.AreEqual (HorizontalAlign.Justify, p.HorizontalAlign, "A72");
  408. p.HorizontalAlign = HorizontalAlign.Left;
  409. Assert.AreEqual (HorizontalAlign.Left, p.HorizontalAlign, "A73");
  410. p.HorizontalAlign = HorizontalAlign.NotSet;
  411. Assert.AreEqual (HorizontalAlign.NotSet, p.HorizontalAlign, "A74");
  412. p.HorizontalAlign = HorizontalAlign.Right;
  413. Assert.AreEqual (HorizontalAlign.Right, p.HorizontalAlign, "A75");
  414. p.InsertItemTemplate = customTemplate;
  415. Assert.AreEqual (customTemplate, p.InsertItemTemplate, "A76");
  416. p.InsertRowStyle.BorderStyle = BorderStyle.Outset;
  417. Assert.AreEqual (BorderStyle.Outset, p.InsertRowStyle.BorderStyle, "A77");
  418. p.ItemTemplate = customTemplate;
  419. Assert.AreEqual (customTemplate, p.ItemTemplate, "A78");
  420. p.PagerSettings.FirstPageText = "PagerSettings Test";
  421. Assert.AreEqual ("PagerSettings Test", p.PagerSettings.FirstPageText, "A79");
  422. p.PagerStyle.BorderStyle = BorderStyle.Groove;
  423. Assert.AreEqual (BorderStyle.Groove, p.PagerStyle.BorderStyle, "A80");
  424. p.PagerTemplate = customTemplate;
  425. Assert.AreEqual (customTemplate, p.PagerTemplate, "A81");
  426. p.RowStyle.ForeColor = Color.Plum;
  427. Assert.AreEqual (Color.Plum, p.RowStyle.ForeColor, "A82");
  428. }
  429. [Test]
  430. public void FormView_ItemsProperties ()
  431. {
  432. Poker p = new Poker ();
  433. p.Page = new Page ();
  434. p.AllowPaging = true;
  435. p.DataSource = myds;
  436. p.DataBind ();
  437. //Assert.AreEqual (typeof (FormViewPagerRow), (p.BottomPagerRow).GetType (), "BottomPagerRow1");
  438. Assert.AreEqual (0, p.BottomPagerRow.ItemIndex, "BottomPagerRow2");
  439. Assert.AreEqual (DataControlRowType.Pager, p.BottomPagerRow.RowType, "BottomPagerRow2");
  440. Assert.AreEqual ("Item1", p.DataItem, "DataItem");
  441. Assert.AreEqual (6, p.DataItemCount, "DataItemCount");
  442. Assert.AreEqual (0, p.DataItemIndex, "DataItemIndex");
  443. Assert.AreEqual (0, p.DataItemIndex, "DataItemIndex");
  444. string[] str = new string[] { "1", "2", "3", "4", "5", "6" };
  445. Assert.AreEqual (typeof (DataKey), p.DataKey.GetType (), "DataKey");
  446. p.DataKeyNames = str;
  447. Assert.AreEqual (str, p.DataKeyNames, "DataKeyNames");
  448. p.ChangeMode (FormViewMode.Edit);
  449. Assert.AreEqual (FormViewMode.Edit, p.CurrentMode, "CurrentModeEdit");
  450. p.ChangeMode (FormViewMode.Insert);
  451. Assert.AreEqual (FormViewMode.Insert, p.CurrentMode, "CurrentModeInsert");
  452. }
  453. [Test]
  454. public void FormView_DefaultProtectedProperties ()
  455. {
  456. Poker fv = new Poker ();
  457. Assert.AreEqual (HtmlTextWriterTag.Table, fv.PokerTagKey, "TagKey");
  458. }
  459. // Protected methods
  460. [Test]
  461. public void FormView_CreateChildControls ()
  462. {
  463. Poker fv = new Poker ();
  464. fv.DataSource = myds;
  465. fv.Page = new Page ();
  466. Assert.AreEqual (6, fv.DoCreateChildControls (myds, true), "CreateChildControlFromDS");
  467. myds.Add ("item7");
  468. Assert.AreEqual (7, fv.DoCreateChildControls (myds, false), "CreateChildControlFromViewState");
  469. myds.Remove ("item7");
  470. }
  471. [Test]
  472. public void FormView_CreateDataSourceSelectArguments ()
  473. {
  474. //Checks the default DataSourceSelectArgument object returned.
  475. Poker fv = new Poker ();
  476. DataSourceSelectArguments selectArgs = fv.DoCreateDataSourceSelectArguments ();
  477. Assert.AreEqual (0, selectArgs.MaximumRows, "CreateDataSourceSelectArguments1");
  478. Assert.AreEqual (false, selectArgs.RetrieveTotalRowCount, "CreateDataSourceSelectArguments2");
  479. }
  480. [Test]
  481. public void FormView_CreateControlStyle ()
  482. {
  483. Poker fv = new Poker ();
  484. Style s = fv.DoCreateControlStyle ();
  485. Assert.AreEqual (typeof (TableStyle), s.GetType (), "CreateControlStyle1");
  486. Assert.AreEqual (GridLines.None, ((TableStyle) s).GridLines, "CreateControlStyle2");
  487. Assert.AreEqual ("", ((TableStyle) s).BackImageUrl, "CreateControlStyle3");
  488. Assert.AreEqual (0, ((TableStyle) s).CellSpacing, "CreateControlStyle4");
  489. Assert.AreEqual (-1, ((TableStyle) s).CellPadding, "CreateControlStyle5");
  490. }
  491. [Test]
  492. public void FormView_InitializeRow ()
  493. {
  494. //not implemented
  495. }
  496. [Test]
  497. public void FormView_InitializePager ()
  498. {
  499. Poker fv = new Poker ();
  500. Page page = new Page ();
  501. page.Controls.Add (fv);
  502. fv.AllowPaging = true;
  503. fv.DataSource = myds;
  504. Assert.AreEqual (false, fv.isInitializePager, "BeforeInitializePager");
  505. Assert.AreEqual (0, fv.PageCount, "BeforeInitializePagerPageCount");
  506. fv.DataBind ();
  507. Assert.AreEqual (true, fv.isInitializePager, "AfterInitializePager");
  508. Assert.AreEqual (6, fv.PageCount, "AfterInitializePagerPageCount");
  509. }
  510. [Test]
  511. public void FormView_CreateRow ()
  512. {
  513. Poker fv = new Poker ();
  514. fv.AllowPaging =true;
  515. fv.DataSource = myds;
  516. fv.Page = new Page ();
  517. fv.DataBind ();
  518. FormViewRow row = fv.DoCreateRow (2,DataControlRowType.DataRow ,DataControlRowState.Normal );
  519. Assert.AreEqual (2, row.ItemIndex, "CreatedRowItemIndex1");
  520. Assert.AreEqual (DataControlRowState.Normal , row.RowState, "CreatedRowState1");
  521. Assert.AreEqual (DataControlRowType.DataRow , row.RowType, "CreatedRowType1");
  522. row = fv.DoCreateRow (4, DataControlRowType.Footer, DataControlRowState.Edit);
  523. Assert.AreEqual (4, row.ItemIndex, "CreatedRowItemIndex2");
  524. Assert.AreEqual (DataControlRowState.Edit , row.RowState, "CreatedRowState2");
  525. Assert.AreEqual (DataControlRowType.Footer , row.RowType, "CreatedRowType2");
  526. //FormViewPagerRow pagerRow = (FormViewPagerRow)fv.DoCreateRow (3, DataControlRowType.Pager , DataControlRowState.Insert);
  527. //Assert.AreEqual (3, pagerRow.ItemIndex, "CreatedPageRowItemIndex");
  528. //Assert.AreEqual (DataControlRowState.Insert, pagerRow.RowState, "CreatedPageRowState");
  529. //Assert.AreEqual (DataControlRowType.Pager, pagerRow.RowType, "CreatedPageRowType");
  530. }
  531. [Test]
  532. public void FormView_CreateTable ()
  533. {
  534. Poker fv = new Poker ();
  535. Table tb = fv.DoCreateTable ();
  536. fv.Page = new Page ();
  537. Assert.AreEqual ("", tb.BackImageUrl , "CreateTable1");
  538. Assert.AreEqual (0, tb.Rows.Count, "CreateTable2");
  539. fv.DataSource = myds;
  540. fv.DataBind ();
  541. fv.ID = "TestFormView";
  542. tb = fv.DoCreateTable ();
  543. Assert.AreEqual (-1, tb.CellPadding , "CreateTable3");
  544. }
  545. [Test]
  546. public void FormView_EnsureDataBound ()
  547. {
  548. Poker fv = new Poker ();
  549. fv.DataSource = myds;
  550. fv.DoOnPreRender (EventArgs.Empty);
  551. Assert.AreEqual (true, fv.ensureDataBound, "EnsureDataBound");
  552. }
  553. [Test]
  554. public void FormView_PerformDataBinding ()
  555. {
  556. Poker fv = new Poker ();
  557. fv.Page = new Page ();
  558. Assert.AreEqual (0,fv.DataItemCount, "BeforePerformDataBinding");
  559. fv.DoPerformDataBinding (myds);
  560. Assert.AreEqual (6, fv.DataItemCount, "AfterPerformDataBinding");
  561. }
  562. [Test]
  563. public void FormView_ExtractRowValues ()
  564. {
  565. Poker fv=new Poker ();
  566. fv.ItemTemplate = new MyTemplate ();
  567. fv.DataKeyNames = new string[] { "ID", "FName", "LName" };
  568. //IOrderedDictionary dict = (IOrderedDictionary) new OrderedDictionary (0x19);
  569. //fv.DoExtractRowValues (dict, true);
  570. //DataTable ds = CreateDataTable ();
  571. //fv.DataSource = ds;
  572. //fv.DataBind ();
  573. //OrderedDictionary fieldsValues = new OrderedDictionary ();
  574. //fv.DoExtractRowValues (fieldsValues, true);
  575. //Assert.AreEqual (3, fieldsValues.Count, "ExtractRowValues1");
  576. //Assert.AreEqual (3, fieldsValues.Keys.Count, "ExtractRowValues2");
  577. //Assert.AreEqual (3, fieldsValues.Values.Count, "ExtractRowValues3");
  578. //Assert.AreEqual (true, fieldsValues.Contains ("ID"), "ExtractRowValues4");
  579. //IDictionaryEnumerator enumerator = fieldsValues.GetEnumerator ();
  580. //enumerator.MoveNext ();
  581. //Assert.AreEqual ("ID", enumerator.Key, "FieldValue1");
  582. //Assert.AreEqual ("1001", enumerator.Value, "FieldValue2");
  583. //enumerator.MoveNext ();
  584. //Assert.AreEqual ("FName", enumerator.Key, "FieldValue3");
  585. //Assert.AreEqual ("Mahesh", enumerator.Value, "FieldValue4");
  586. //enumerator.MoveNext ();
  587. //Assert.AreEqual ("LName", enumerator.Key, "FieldValue5");
  588. //Assert.AreEqual ("Chand", enumerator.Value, "FieldValue6");
  589. }
  590. [Test]
  591. public void FormView_PrepareControlHierarcy ()
  592. {
  593. Poker fv = new Poker ();
  594. fv.Page = new Page ();
  595. fv.controlHierarchy = false;
  596. fv.Render ();
  597. Assert.AreEqual (0, fv.Controls.Count, "ControlHierarchy1");
  598. Assert.AreEqual (true, fv.controlHierarchy, "ControlHierarchy2");
  599. fv.AllowPaging = true;
  600. fv.DataSource = myds;
  601. fv.DataBind ();
  602. fv.controlHierarchy = false;
  603. fv.Render ();
  604. Assert.AreEqual (1, fv.Controls.Count, "ControlHierarchy3");
  605. Assert.AreEqual (true, fv.controlHierarchy, "ControlHierarchy4");
  606. }
  607. //Public Methods
  608. [Test]
  609. public void FormView_ChangeMode ()
  610. {
  611. Poker fv = new Poker ();
  612. Assert.AreEqual (FormViewMode.ReadOnly, fv.CurrentMode, "ChangeModeDefault");
  613. fv.ChangeMode (FormViewMode.Insert);
  614. Assert.AreEqual (FormViewMode.Insert, fv.CurrentMode, "ChangeModeInsert");
  615. fv.ChangeMode (FormViewMode.Edit);
  616. Assert.AreEqual (FormViewMode.Edit, fv.CurrentMode, "ChangeModeEdit");
  617. fv.ChangeMode (FormViewMode.ReadOnly);
  618. Assert.AreEqual (FormViewMode.ReadOnly, fv.CurrentMode, "ChangeModeReadOnly");
  619. }
  620. [Test]
  621. public void FormView_DataBind ()
  622. {
  623. Poker fv = new Poker ();
  624. fv.AllowPaging = true;
  625. fv.DataSource = myds;
  626. fv.Page = new Page ();
  627. Assert.AreEqual (0, fv.PageCount, "BeforeDataBind1");
  628. Assert.AreEqual (null, fv.DataItem, "BeforeDataBind2");
  629. fv.DataBind ();
  630. Assert.AreEqual (6, fv.PageCount, "AfterDataBind1");
  631. Assert.AreEqual (6, fv.DataItemCount, "AfterDataBind2");
  632. Assert.AreEqual ("Item1", fv.DataItem, "AfterDataBind3");
  633. }
  634. private bool isDeleted = false;
  635. [Test]
  636. public void FormView_DeleteItem ()
  637. {
  638. Poker fv = new Poker ();
  639. fv.Page = new Page ();
  640. fv.DataSource = myds;
  641. fv.DataBind ();
  642. Assert.AreEqual (false, isDeleted, "BeforeDeleteItem");
  643. fv.ItemDeleting += new FormViewDeleteEventHandler (fv_DeleteingHandler);
  644. fv.DeleteItem ();
  645. Assert.AreEqual (true, isDeleted, "BeforeDeleteItem");
  646. }
  647. public void fv_DeleteingHandler (Object sender, FormViewDeleteEventArgs e)
  648. {
  649. isDeleted = true;
  650. }
  651. private bool insertItem = false;
  652. [Test]
  653. public void FormView_InsertItem ()
  654. {
  655. Poker fv = new Poker ();
  656. fv.Page = new Page ();
  657. fv.ChangeMode (FormViewMode.Insert);
  658. fv.ItemInserting += new FormViewInsertEventHandler (insert_item);
  659. Assert.AreEqual (false, insertItem, "BeforeInsertItem");
  660. fv.InsertItem (false);
  661. Assert.AreEqual (true, insertItem, "AfterInsertItem");
  662. }
  663. public void insert_item (object sender, FormViewInsertEventArgs e)
  664. {
  665. insertItem = true;
  666. }
  667. private bool updateItem = false;
  668. [Test]
  669. public void FormView_UpdateItem ()
  670. {
  671. Poker fv = new Poker ();
  672. fv.Page = new Page ();
  673. fv.DataSource = myds;
  674. fv.DataBind ();
  675. fv.ChangeMode (FormViewMode.Edit);
  676. fv.ItemUpdating += new FormViewUpdateEventHandler (update_item);
  677. Assert.AreEqual (false, updateItem, "BeforeUpdateItem");
  678. fv.UpdateItem (false);
  679. Assert.AreEqual (true, updateItem, "AfterUpdateItem");
  680. }
  681. public void update_item (object sender, FormViewUpdateEventArgs e)
  682. {
  683. updateItem = true;
  684. }
  685. [Test]
  686. public void FormView_IsBindableType ()
  687. {
  688. bool isBindable = false;
  689. Poker fv = new Poker ();
  690. isBindable = fv.IsBindableType (typeof (Decimal));
  691. Assert.AreEqual (true, isBindable, "IsBindableTypeDecimal");
  692. isBindable = fv.IsBindableType (typeof (Int32));
  693. Assert.AreEqual (true, isBindable, "IsBindableTypeInt32");
  694. isBindable = fv.IsBindableType (typeof (String));
  695. Assert.AreEqual (true, isBindable, "IsBindableTypeString");
  696. isBindable = fv.IsBindableType (typeof (Boolean));
  697. Assert.AreEqual (true, isBindable, "IsBindableTypeBoolean");
  698. isBindable = fv.IsBindableType (typeof (DateTime));
  699. Assert.AreEqual (true, isBindable, "IsBindableTypeDateTime");
  700. isBindable = fv.IsBindableType (typeof (Byte));
  701. Assert.AreEqual (true, isBindable, "IsBindableTypeByte");
  702. isBindable = fv.IsBindableType (typeof (Guid));
  703. Assert.AreEqual (true, isBindable, "IsBindableTypeGuid");
  704. isBindable = fv.IsBindableType (typeof (MyTemplate));
  705. Assert.AreEqual (false, isBindable, "IsBindableTypeMyTemplate");
  706. }
  707. [Test]
  708. public void FormView_ControlState () {
  709. Poker fv = new Poker ();
  710. Poker copy = new Poker ();
  711. string[] keys = new String[2];
  712. keys[0] = "key1";
  713. keys[1] = "key2";
  714. fv.DataKeyNames = keys;
  715. fv.BackImageUrl = "photo.jpg";
  716. fv.DefaultMode = FormViewMode.Insert ;
  717. fv.ChangeMode (FormViewMode.Edit);
  718. object state = fv.DoSaveControlState ();
  719. copy.DoLoadControlState (state);
  720. Assert.AreEqual (2, copy.DataKeyNames.Length, "DataKeyNames.Length");
  721. Assert.AreEqual ("key1", copy.DataKeyNames[0], "ControlStateDataKeyValue");
  722. Assert.AreEqual ("key2", copy.DataKeyNames[1], "ControlStateDataKeyValue2");
  723. Assert.AreEqual (FormViewMode.Insert, copy.DefaultMode, "ControlStateDefaultMode");
  724. Assert.AreEqual (FormViewMode.Edit, copy.CurrentMode, "ControlStateCurrentMode");
  725. }
  726. //ViewState
  727. [Test]
  728. public void FormView_ViewState ()
  729. {
  730. Poker fv = new Poker ();
  731. Poker copy = new Poker ();
  732. fv.AllowPaging = true;
  733. fv.HeaderText = "Testing";
  734. fv.CssClass = "style.css";
  735. object state = fv.SaveState ();
  736. copy.LoadState (state);
  737. Assert.AreEqual (true, copy.AllowPaging, "ViewStateAllowPaging");
  738. Assert.AreEqual ("Testing", copy.HeaderText, "ViewStateHeaderText");
  739. Assert.AreEqual ("style.css", copy.CssClass, "ViewStateCssClass");
  740. }
  741. //Events
  742. private bool init;
  743. private bool itemCommand;
  744. private bool itemCreated;
  745. private bool itemDeleted;
  746. private bool itemDeleting;
  747. private bool itemInserted;
  748. private bool itemInserting;
  749. private bool itemUpdated;
  750. private bool itemUpdating;
  751. private bool modeChanged;
  752. private bool modeChanging;
  753. private bool pageIndexChanged;
  754. private bool pageIndexChanging;
  755. private int newPageIndex;
  756. public void ResetEvents ()
  757. {
  758. init = false;
  759. itemCommand = false;
  760. itemCreated = false;
  761. itemDeleted = false;
  762. itemDeleting = false;
  763. itemInserted = false;
  764. itemInserting = false;
  765. itemUpdated = false;
  766. itemUpdating = false;
  767. modeChanged = false;
  768. modeChanging = false;
  769. pageIndexChanged = false;
  770. pageIndexChanging = false;
  771. }
  772. [Test]
  773. public void FormView_BubbleEvent ()
  774. {
  775. FormViewCommandEventArgs com;
  776. Poker fv = new Poker ();
  777. Page page = new Page ();
  778. Button bt = new Button ();
  779. fv.AllowPaging = true;
  780. fv.DataSource = myds;
  781. page.Controls.Add (fv);
  782. fv.DataBind ();
  783. ResetEvents ();
  784. fv.ItemCommand += new FormViewCommandEventHandler (fv_ItemCommand);
  785. fv.ItemDeleted += new FormViewDeletedEventHandler (fv_ItemDeleted);
  786. //Delete
  787. fv.ItemDeleting += new FormViewDeleteEventHandler (fv_ItemDeleting);
  788. com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Delete", null));
  789. Assert.AreEqual (false, itemDeleting, "BeforeDeleteCommandBubbleEvent");
  790. Assert.AreEqual (false, itemCommand, "BeforeDeleteBubbleEvent");
  791. Assert.IsTrue (fv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Delete");
  792. Assert.AreEqual (true, itemDeleting, "AfterDeleteBubbleEvent");
  793. Assert.AreEqual (true, itemCommand, "AfterDeleteCommandBubbleEvent");
  794. //Insert
  795. itemCommand = false;
  796. fv.ItemInserting += new FormViewInsertEventHandler (fv_ItemInserting);
  797. fv.ChangeMode (FormViewMode.Insert);
  798. com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Insert", null));
  799. Assert.AreEqual (false, itemCommand, "BeforeInsertCommandBubbleEvent");
  800. Assert.AreEqual (false, itemInserting, "BeforeInsertBubbleEvent");
  801. Assert.IsTrue (fv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Insert");
  802. Assert.AreEqual (true, itemCommand, "AfterInsertCommandBubbleEvent");
  803. Assert.AreEqual (true, itemInserting, "AfterInsertBubbleEvent");
  804. //Update
  805. itemCommand = false;
  806. fv.ItemUpdating += new FormViewUpdateEventHandler (fv_ItemUpdating);
  807. fv.ChangeMode (FormViewMode.Edit);
  808. com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Update", null));
  809. Assert.AreEqual (false, itemUpdating, "BeforeUpdateEvent");
  810. Assert.AreEqual (false, itemCommand, "BeforeUpdateCommandEvent");
  811. Assert.IsTrue (fv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Update");
  812. Assert.AreEqual (true, itemCommand, "AfterUpdateCommandBubbleEvent");
  813. Assert.AreEqual (true, itemUpdating, "AfterUpdateBubbleEvent");
  814. //Cancel
  815. itemCommand = false;
  816. fv.ModeChanging += new FormViewModeEventHandler (fv_ModeChanging);
  817. com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Cancel", null));
  818. Assert.AreEqual (false, itemCommand, "BeforeCancelCommandBubbleEvent");
  819. Assert.AreEqual (false, modeChanging, "BeforeCancelBubbleEvent");
  820. Assert.IsTrue (fv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Cancel");
  821. Assert.AreEqual (true, itemCommand, "AfterCancelCommandBubbleEvent");
  822. Assert.AreEqual (true, modeChanging, "AfterCancelBubbleEvent");
  823. //Edit
  824. itemCommand = false;
  825. modeChanging = false;
  826. com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Edit", null));
  827. Assert.AreEqual (false, itemCommand, "BeforeEditCommandBubbleEvent");
  828. Assert.AreEqual (false, modeChanging, "BeforeEditBubbleEvent");
  829. Assert.IsTrue (fv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Edit");
  830. Assert.AreEqual (true, itemCommand, "AfterEditCommandBubbleEvent");
  831. Assert.AreEqual (true, modeChanging, "AfterEditBubbleEvent");
  832. //New
  833. itemCommand = false;
  834. modeChanging = false;
  835. com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("New", null));
  836. Assert.AreEqual (false, itemCommand, "BeforeNewCommandBubbleEvent");
  837. Assert.AreEqual (false, modeChanging, "BeforeNewBubbleEvent");
  838. Assert.IsTrue (fv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - New");
  839. Assert.AreEqual (true, itemCommand, "AfterNewCommandBubbleEvent");
  840. Assert.AreEqual (true, modeChanging, "AfterNewBubbleEvent");
  841. //Page Index default
  842. itemCommand = false;
  843. fv.PageIndexChanging += new FormViewPageEventHandler (fv_PageIndexChanging);
  844. com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Page", null));
  845. Assert.AreEqual (false, itemCommand, "BeforePageCommandBubbleEvent");
  846. Assert.AreEqual (false, pageIndexChanging, "BeforePageBubbleEvent");
  847. Assert.IsTrue (fv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Page Index default");
  848. Assert.AreEqual (true, itemCommand, "AfterPageCommandBubbleEvent");
  849. Assert.AreEqual (true, pageIndexChanging, "AfterPageBubbleEvent");
  850. Assert.AreEqual (-1, newPageIndex, "PageIndex");
  851. //Next Page
  852. itemCommand = false;
  853. pageIndexChanging = false;
  854. com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Page", "Next"));
  855. Assert.AreEqual (false, itemCommand, "BeforeNextPageCommandBubbleEvent");
  856. Assert.AreEqual (false, pageIndexChanging, "BeforeNextPageBubbleEvent");
  857. Assert.IsTrue (fv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Next Page");
  858. Assert.AreEqual (true, itemCommand, "AfterNextPageCommandBubbleEvent");
  859. Assert.AreEqual (true, pageIndexChanging, "AfterNextPageBubbleEvent");
  860. Assert.AreEqual (1, newPageIndex, "NextPageIndex");
  861. //Prev Page
  862. itemCommand = false;
  863. pageIndexChanging = false;
  864. com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Page", "Prev"));
  865. Assert.AreEqual (false, itemCommand, "BeforePrevPageCommandBubbleEvent");
  866. Assert.AreEqual (false, pageIndexChanging, "BeforePrevPageBubbleEvent");
  867. Assert.IsTrue (fv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Prev Page");
  868. Assert.AreEqual (true, itemCommand, "AfterPrevPageCommandBubbleEvent");
  869. Assert.AreEqual (true, pageIndexChanging, "AfterPrevPageBubbleEvent");
  870. Assert.AreEqual (-1, newPageIndex, "PrevPageIndex");
  871. //First Page
  872. itemCommand = false;
  873. pageIndexChanging = false;
  874. com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Page", "First"));
  875. Assert.AreEqual (false, itemCommand, "BeforeFirstPageCommandBubbleEvent");
  876. Assert.AreEqual (false, pageIndexChanging, "BeforeFirstPageBubbleEvent");
  877. Assert.IsTrue (fv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - First Page");
  878. Assert.AreEqual (true, itemCommand, "AfterFirstPageCommandBubbleEvent");
  879. Assert.AreEqual (true, pageIndexChanging, "AfterFirstPageBubbleEvent");
  880. Assert.AreEqual (0, newPageIndex, "FirstPageIndex");
  881. //Last Page
  882. itemCommand = false;
  883. pageIndexChanging = false;
  884. com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Page", "Last"));
  885. Assert.AreEqual (false, itemCommand, "BeforeLastPageCommandBubbleEvent");
  886. Assert.AreEqual (false, pageIndexChanging, "BeforeLastPageBubbleEvent");
  887. Assert.IsTrue (fv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Last Page");
  888. Assert.AreEqual (true, itemCommand, "AfterLastPageCommandBubbleEvent");
  889. Assert.AreEqual (true, pageIndexChanging, "AfterLastPageBubbleEvent");
  890. Assert.AreEqual (5, newPageIndex, "FirstPageIndex");
  891. }
  892. [Test]
  893. public void FormView_Events ()
  894. {
  895. ResetEvents ();
  896. Poker fv = new Poker ();
  897. fv.Page = new Page ();
  898. fv.Init += new EventHandler (fv_Init);
  899. fv.ItemCommand += new FormViewCommandEventHandler (fv_ItemCommand);
  900. fv.ItemCreated += new EventHandler (fv_ItemCreated);
  901. fv.ItemDeleted += new FormViewDeletedEventHandler (fv_ItemDeleted);
  902. fv.ItemDeleting += new FormViewDeleteEventHandler (fv_ItemDeleting);
  903. fv.ItemInserted += new FormViewInsertedEventHandler (fv_ItemInserted);
  904. fv.ItemInserting += new FormViewInsertEventHandler (fv_ItemInserting);
  905. fv.ItemUpdated += new FormViewUpdatedEventHandler (fv_ItemUpdated);
  906. fv.ItemUpdating += new FormViewUpdateEventHandler (fv_ItemUpdating);
  907. fv.ModeChanged += new EventHandler (fv_ModeChanged);
  908. fv.ModeChanging += new FormViewModeEventHandler (fv_ModeChanging);
  909. fv.PageIndexChanged += new EventHandler (fv_PageIndexChanged);
  910. fv.PageIndexChanging += new FormViewPageEventHandler (fv_PageIndexChanging);
  911. Assert.AreEqual (false, init, "BeforeInit");
  912. fv.DoOnInit (new EventArgs ());
  913. Assert.AreEqual (true, init, "AfterInit");
  914. Assert.AreEqual (false, itemCommand, "BeforeItemCommandEvent");
  915. Button bt = new Button ();
  916. fv.DoOnItemCommand (new FormViewCommandEventArgs (bt, new CommandEventArgs ("", null)));
  917. Assert.AreEqual (true, itemCommand, "AfterItemCommandEvent");
  918. Assert.AreEqual (false, itemCreated, "BeforeItemCreatedEvent");
  919. fv.DoOnItemCreated (new EventArgs ());
  920. Assert.AreEqual (true, itemCreated, "AfterItemCreatedEvent");
  921. Assert.AreEqual (false, itemDeleted, "BeforeItemDeletedEvent");
  922. fv.DoOnItemDeleted (new FormViewDeletedEventArgs (3, new Exception ()));
  923. Assert.AreEqual (true, itemDeleted, "AfterItemDeletedEvent");
  924. Assert.AreEqual (false, itemDeleting, "BeforeItemDeletingEvent");
  925. fv.DoOnItemDeleting (new FormViewDeleteEventArgs (1));
  926. Assert.AreEqual (true, itemDeleting, "AfterItemDeletingEvent");
  927. Assert.AreEqual (false, itemInserted, "BeforeItemInsertedEvent");
  928. fv.DoOnItemInserted (new FormViewInsertedEventArgs (2, new Exception ()));
  929. Assert.AreEqual (true, itemInserted, "AfterItemInsetedEvent");
  930. Assert.AreEqual (false, itemInserting, "BeforeItemInsertingEvent");
  931. fv.DoOnItemInserting (new FormViewInsertEventArgs (bt));
  932. Assert.AreEqual (true, itemInserting, "AfterItemInsetingEvent");
  933. Assert.AreEqual (false, itemUpdated, "BeforeItemUpdatedEvent");
  934. fv.DoOnItemUpdated (new FormViewUpdatedEventArgs (1, new Exception ()));
  935. Assert.AreEqual (true, itemUpdated, "AfterItemUpdatedEvent");
  936. Assert.AreEqual (false, itemUpdating, "BeforeItemUpdatingEvent");
  937. fv.DoOnItemUpdating (new FormViewUpdateEventArgs (bt));
  938. Assert.AreEqual (true, itemUpdating, "AfterItemUpdatingEvent");
  939. Assert.AreEqual (false, modeChanged, "BeforeModeChangedEvent");
  940. fv.DoOnModeChanged (new EventArgs ());
  941. Assert.AreEqual (true, modeChanged, "AfterModeChangedEvent");
  942. Assert.AreEqual (false, modeChanging, "BeforeModeChangingEvent");
  943. fv.DoOnModeChanging (new FormViewModeEventArgs (FormViewMode.Edit, true));
  944. Assert.AreEqual (true, modeChanging, "AfterModeChangingEvent");
  945. Assert.AreEqual (false, pageIndexChanged, "BeforePageIndexChangedEvent");
  946. fv.DoOnPageIndexChanged (new EventArgs ());
  947. Assert.AreEqual (true, pageIndexChanged, "AfterPageIndexChangedEvent");
  948. Assert.AreEqual (false, pageIndexChanging, "BeforePageIndexChangingEvent");
  949. fv.DoOnPageIndexChanging (new FormViewPageEventArgs (1));
  950. Assert.AreEqual (true, pageIndexChanging, "AfterPageIndexChangingEvent");
  951. }
  952. private void fv_Init (object sender, EventArgs e)
  953. {
  954. init = true;
  955. }
  956. private void fv_ItemCommand (object sender, FormViewCommandEventArgs e)
  957. {
  958. itemCommand = true;
  959. }
  960. private void fv_ItemCreated (object sender, EventArgs e)
  961. {
  962. itemCreated = true;
  963. }
  964. private void fv_ItemDeleted (object sender, FormViewDeletedEventArgs e)
  965. {
  966. itemDeleted = true;
  967. }
  968. private void fv_ItemDeleting (object sender, FormViewDeleteEventArgs e)
  969. {
  970. itemDeleting = true;
  971. }
  972. private void fv_ItemInserted (object sender, FormViewInsertedEventArgs e)
  973. {
  974. itemInserted = true;
  975. }
  976. private void fv_ItemInserting (object sender, FormViewInsertEventArgs e)
  977. {
  978. itemInserting = true;
  979. }
  980. private void fv_ItemUpdated (object sender, FormViewUpdatedEventArgs e)
  981. {
  982. itemUpdated = true;
  983. }
  984. private void fv_ItemUpdating (object sender, FormViewUpdateEventArgs e)
  985. {
  986. itemUpdating = true;
  987. }
  988. private void fv_ModeChanged (object sender, EventArgs e)
  989. {
  990. modeChanged = true;
  991. }
  992. private void fv_ModeChanging (object sender, FormViewModeEventArgs e)
  993. {
  994. modeChanging = true;
  995. }
  996. private void fv_PageIndexChanged (object sender, EventArgs e)
  997. {
  998. pageIndexChanged = true;
  999. }
  1000. private void fv_PageIndexChanging (object sender, FormViewPageEventArgs e)
  1001. {
  1002. pageIndexChanging = true;
  1003. newPageIndex = e.NewPageIndex;
  1004. e.NewPageIndex = -1;
  1005. }
  1006. //Exceptions
  1007. [Test]
  1008. [ExpectedException (typeof (ArgumentOutOfRangeException))]
  1009. public void CellPaddingException ()
  1010. {
  1011. Poker p = new Poker ();
  1012. p.CellPadding = -2;
  1013. }
  1014. [Test]
  1015. [ExpectedException (typeof (ArgumentOutOfRangeException))]
  1016. public void CellSpacingException ()
  1017. {
  1018. Poker p = new Poker ();
  1019. p.CellSpacing = -5;
  1020. }
  1021. [Test]
  1022. [ExpectedException (typeof (ArgumentOutOfRangeException))]
  1023. public void PageIndexException ()
  1024. {
  1025. Poker p = new Poker ();
  1026. p.PageIndex = -5;
  1027. }
  1028. [Test]
  1029. [ExpectedException (typeof (HttpException))]
  1030. public void InsertItemException ()
  1031. {
  1032. Poker p = new Poker ();
  1033. p.InsertItem (true);
  1034. }
  1035. [Test]
  1036. [ExpectedException (typeof (HttpException))]
  1037. public void UpdateItemException ()
  1038. {
  1039. Poker p = new Poker ();
  1040. p.UpdateItem (true);
  1041. }
  1042. [Test]
  1043. [Category ("NotDotNet")] //TODO
  1044. public void PageIndex ()
  1045. {
  1046. ObjectDataSource ds = new ObjectDataSource ();
  1047. ds.ID = "ObjectDataSource1";
  1048. ds.TypeName = "System.Guid";
  1049. ds.SelectMethod = "ToByteArray";
  1050. Page p = new Page ();
  1051. Poker f = new Poker ();
  1052. f.Page = p;
  1053. ds.Page = p;
  1054. p.Controls.Add (f);
  1055. p.Controls.Add (ds);
  1056. f.DataSourceID = "ObjectDataSource1";
  1057. f.DoConfirmInitState ();
  1058. f.DoOnPreRender (EventArgs.Empty);
  1059. object cur = f.DataItem;
  1060. f.PageIndex = 1;
  1061. Assert.IsTrue (cur != f.DataItem, "#01");
  1062. CommandEventArgs cargs = new CommandEventArgs ("Page", "Prev");
  1063. FormViewCommandEventArgs fvargs = new FormViewCommandEventArgs (f, cargs);
  1064. f.DoOnBubbleEvent (f, fvargs);
  1065. Assert.IsTrue (f.OnPageIndexChangingCalled, "#02");
  1066. Assert.IsTrue (f.OnPageIndexChangedCalled, "#03");
  1067. f.OnPageIndexChangingCalled = false;
  1068. f.OnPageIndexChangedCalled = false;
  1069. f.DoOnBubbleEvent (f, fvargs);
  1070. Assert.IsTrue (f.OnPageIndexChangingCalled, "#04");
  1071. Assert.IsFalse (f.OnPageIndexChangedCalled, "#05");
  1072. f.OnPageIndexChangingCalled = false;
  1073. f.OnPageIndexChangedCalled = false;
  1074. f.PageIndex = f.PageCount - 1;
  1075. cargs = new CommandEventArgs ("Page", "Next");
  1076. fvargs = new FormViewCommandEventArgs (f, cargs);
  1077. f.DoOnBubbleEvent (f, fvargs);
  1078. Assert.IsTrue (f.OnPageIndexChangingCalled, "#06");
  1079. Assert.IsFalse (f.OnPageIndexChangedCalled, "#07");
  1080. f.OnPageIndexChangingCalled = false;
  1081. f.OnPageIndexChangedCalled = false;
  1082. }
  1083. [Test]
  1084. public void PageCount ()
  1085. {
  1086. ObjectDataSource ds = new ObjectDataSource ();
  1087. ds.ID = "ObjectDataSource1";
  1088. ds.TypeName = "System.Guid";
  1089. ds.SelectMethod = "ToByteArray";
  1090. Page p = new Page ();
  1091. Poker f = new Poker ();
  1092. f.Page = p;
  1093. ds.Page = p;
  1094. p.Controls.Add (f);
  1095. p.Controls.Add (ds);
  1096. f.DataSourceID = "ObjectDataSource1";
  1097. f.DoConfirmInitState ();
  1098. f.DoOnPreRender (EventArgs.Empty);
  1099. f.PageIndex = 1;
  1100. Assert.AreEqual (16, f.PageCount, "#01");
  1101. }
  1102. [Test]
  1103. public void InsertTemplate () {
  1104. ObjectDataSource ds = new ObjectDataSource ();
  1105. ds.ID = "ObjectDataSource1";
  1106. ds.TypeName = "System.Collections.ArrayList";
  1107. ds.SelectMethod = "ToArray";
  1108. Page p = new Page ();
  1109. Poker f = new Poker ();
  1110. Template itemTemplate = new Template ();
  1111. Template emptyTemplate = new Template ();
  1112. Template insertTemplate = new Template ();
  1113. f.ItemTemplate = itemTemplate;
  1114. f.EmptyDataTemplate = emptyTemplate;
  1115. f.InsertItemTemplate = insertTemplate;
  1116. f.DefaultMode = FormViewMode.Insert;
  1117. f.Page = p;
  1118. ds.Page = p;
  1119. p.Controls.Add (f);
  1120. p.Controls.Add (ds);
  1121. f.DataSourceID = "ObjectDataSource1";
  1122. f.DoConfirmInitState ();
  1123. f.DoOnPreRender (EventArgs.Empty);
  1124. f.AllowPaging = true;
  1125. Assert.IsFalse(itemTemplate.Instantiated, "#01");
  1126. Assert.IsFalse(emptyTemplate.Instantiated, "#02");
  1127. Assert.IsTrue(insertTemplate.Instantiated, "#03");
  1128. }
  1129. [TestFixtureTearDown]
  1130. public void TearDown ()
  1131. {
  1132. Thread.Sleep (100);
  1133. //WebTest.Unload ();
  1134. }
  1135. //[TestFixtureStartUp]
  1136. //public void StartUp ()
  1137. //{
  1138. // WebTest.CopyResource (GetType (), "FormView.aspx", "FormView.aspx");
  1139. //}
  1140. [Test]
  1141. [Category("NunitWeb")]
  1142. public void FormViewCssClass ()
  1143. {
  1144. string res = new WebTest ("FormView.aspx").Run ();
  1145. Assert.IsTrue (Regex.IsMatch (
  1146. res, ".*<table[^>]*class=\"[^\"]*test1[^\"]*\"[^>]*>.*",
  1147. RegexOptions.IgnoreCase|RegexOptions.Singleline),
  1148. "check that <table class=\"test1\"> is found. Actual: "+res);
  1149. Assert.IsFalse (Regex.IsMatch (
  1150. res, ".*<table[^>]*class=\"\"[^>]*>.*",
  1151. RegexOptions.IgnoreCase|RegexOptions.Singleline),
  1152. "check that <table class=\"\"> is not found. Actual: "+res);
  1153. }
  1154. [Test]
  1155. public void FormView_RenderSimpleTemplate()
  1156. {
  1157. string RenderedPageHtml = new WebTest ("FormViewTest1.aspx").Run ();
  1158. string newHtmlValue = RenderedPageHtml.Substring (RenderedPageHtml.IndexOf ("test1") + 5, RenderedPageHtml.IndexOf ("test2") - RenderedPageHtml.IndexOf ("test1") - 5);
  1159. string origHtmlValue = @" &nbsp;<table cellspacing=""2"" cellpadding=""3"" rules=""all"" border=""1"" id=""FormView1"" style=""background-color:#DEBA84;border-color:#DEBA84;border-width:1px;border-style:None;"">
  1160. <tr style=""color:#8C4510;background-color:#FFF7E7;"">
  1161. <td colspan=""2"">
  1162. <span id=""FormView1_Label1"">1</span>
  1163. </td>
  1164. </tr><tr align=""center"" style=""color:#8C4510;"">
  1165. <td colspan=""2""><table border=""0"">
  1166. <tr>
  1167. <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>
  1168. </tr>
  1169. </table></td>
  1170. </tr>
  1171. </table>";
  1172. HtmlDiff.AssertAreEqual (origHtmlValue, newHtmlValue, "RenderSimpleTemplate");
  1173. }
  1174. [Test]
  1175. public void FormView_RenderFooterAndPager()
  1176. {
  1177. string RenderedPageHtml = new WebTest ("FormViewTest1.aspx").Run ();
  1178. string newHtmlValue = RenderedPageHtml.Substring (RenderedPageHtml.IndexOf ("test2") + 5, RenderedPageHtml.IndexOf ("test3") - RenderedPageHtml.IndexOf ("test2") - 5);
  1179. string origHtmlValue = @" <table cellspacing=""0"" cellpadding=""4"" border=""0"" id=""FormView2"" style=""color:#333333;border-collapse:collapse;"">
  1180. <tr style=""color:#333333;background-color:#F7F6F3;"">
  1181. <td colspan=""2"">
  1182. <span id=""FormView2_Label2"">1</span>
  1183. </td>
  1184. </tr><tr style=""color:White;background-color:#5D7B9D;font-weight:bold;"">
  1185. <td colspan=""2"">
  1186. <span id=""FormView2_Label3"">Footer Template Test</span>
  1187. </td>
  1188. </tr><tr align=""center"" style=""color:White;background-color:#284775;"">
  1189. <td colspan=""2"">
  1190. <input type=""submit"" name=""FormView2$ctl01$Button1"" value=""Prev Item"" id=""FormView2_ctl01_Button1"" />
  1191. <input type=""submit"" name=""FormView2$ctl01$Button2"" value=""Next Item"" id=""FormView2_ctl01_Button2"" />
  1192. <input type=""submit"" name=""FormView2$ctl01$Button3"" value=""First Item"" id=""FormView2_ctl01_Button3"" />
  1193. <input type=""submit"" name=""FormView2$ctl01$Button4"" value=""Last Item"" id=""FormView2_ctl01_Button4"" />
  1194. </td>
  1195. </tr>
  1196. </table>
  1197. </div>";
  1198. HtmlDiff.AssertAreEqual (origHtmlValue, newHtmlValue, "FormView_RenderFooterAndPager");
  1199. }
  1200. [Test]
  1201. [Category ("NunitWeb")]
  1202. public void FormView_RenderWithHeader()
  1203. {
  1204. string RenderedPageHtml = new WebTest ("FormViewTest1.aspx").Run ();
  1205. string newHtmlValue = RenderedPageHtml.Substring (RenderedPageHtml.IndexOf ("test4") + 5, RenderedPageHtml.IndexOf ("endtest") - RenderedPageHtml.IndexOf ("test4") - 5);
  1206. 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;"">
  1207. <tr align=""left"" style=""color:White;background-color:#006699;font-weight:bold;"">
  1208. <td colspan=""2"">Using Header Text property</td>
  1209. </tr><tr align=""center"" style=""color:#000066;background-color:Maroon;"">
  1210. <td colspan=""2"">Using Footer Text property</td>
  1211. </tr><tr align=""left"" style=""color:#000066;background-color:LightGrey;"">
  1212. <td colspan=""2"">
  1213. <a id=""FormView4_ctl01_LinkButton1"" href=""javascript:__doPostBack('FormView4$ctl01$LinkButton1','')"">Next</a>
  1214. <a id=""FormView4_ctl01_LinkButton2"" href=""javascript:__doPostBack('FormView4$ctl01$LinkButton2','')"">Prev</a>
  1215. <span id=""FormView4_ctl01_Label7"">Page Index: 0</span>
  1216. </td>
  1217. </tr>
  1218. </table>";
  1219. HtmlDiff.AssertAreEqual (origHtmlValue, newHtmlValue, "RenderingDefaultPaging");
  1220. }
  1221. [Test]
  1222. [Category ("NunitWeb")]
  1223. public void FormView_Render ()
  1224. {
  1225. string RenderedPageHtml = new WebTest ("FormViewTest1.aspx").Run ();
  1226. string newHtmlValue = RenderedPageHtml.Substring (RenderedPageHtml.IndexOf ("test3") + 5, RenderedPageHtml.IndexOf ("test4") - RenderedPageHtml.IndexOf ("test3") - 5);
  1227. 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;"">
  1228. <tr align=""center"" valign=""top"" style=""color:#C00000;background-color:Tan;font-weight:bold;"">
  1229. <td colspan=""2"">
  1230. <span id=""FormView3_Label5"">Header Template Test</span>
  1231. </td>
  1232. </tr><tr>
  1233. <td colspan=""2"">
  1234. <span id=""FormView3_Label4"">1</span>
  1235. </td>
  1236. </tr><tr align=""center"" style=""color:DarkSlateBlue;background-color:PaleGoldenrod;"">
  1237. <td colspan=""2""><table border=""0"">
  1238. <tr>
  1239. <td><span>1</span></td><td>
  1240. <a href=""javascript:__doPostBack('FormView3','Page$2')"" style=""color:DarkSlateBlue;"">2</a></td><td>
  1241. <a href=""javascript:__doPostBack('FormView3','Page$3')"" style=""color:DarkSlateBlue;"">3</a></td><td>
  1242. <a href=""javascript:__doPostBack('FormView3','Page$4')"" style=""color:DarkSlateBlue;"">4</a></td><td>
  1243. <a href=""javascript:__doPostBack('FormView3','Page$5')"" style=""color:DarkSlateBlue;"">5</a></td><td>
  1244. <a href=""javascript:__doPostBack('FormView3','Page$6')"" style=""color:DarkSlateBlue;"">6</a></td>
  1245. </tr><tr align=""right"" style=""color:#FFC0FF;background-color:Tan;"">
  1246. <td colspan=""2"">
  1247. <span id=""FormView3_Label6"">FormView Footer</span>
  1248. </td>
  1249. </tr>
  1250. </table></td>
  1251. </tr>
  1252. </table>";
  1253. HtmlDiff.AssertAreEqual (origHtmlValue, newHtmlValue, "RenderingDefaultPaging");
  1254. }
  1255. [Test]
  1256. [Category ("NotDotNet")] // becaue Naming container: use "FormView1$....." for DotNet
  1257. [Category ("NotWorking")]
  1258. public void FormView_EditPostback ()
  1259. {
  1260. WebTest t = new WebTest ("FormViewInsertEditDelete.aspx");
  1261. string pageHTML = t.Run ();
  1262. string newHtml = pageHTML.Substring (pageHTML.IndexOf ("start") + 5, pageHTML.IndexOf ("end") - pageHTML.IndexOf ("start") - 5);
  1263. string origHtml = @" <div>
  1264. &nbsp;
  1265. <table cellspacing=""0"" border=""0"" id=""FormView1"" style=""border-collapse:collapse;"">
  1266. <tr>
  1267. <td colspan=""2"">
  1268. <span id=""FormView1_ID"">1001</span>&nbsp;
  1269. <span id=""FormView1_LName"">Chand</span>
  1270. <span id=""FormView1_FName"">Mahesh</span>&nbsp;
  1271. <a id=""FormView1_EditButton"" href=""javascript:__doPostBack('FormView1$EditButton','')"">Edit</a>
  1272. <a id=""FormView1_NewButton"" href=""javascript:__doPostBack('FormView1$NewButton','')"">New</a>
  1273. <a id=""FormView1_DeleteButton"" href=""javascript:__doPostBack('FormView1$DeleteButton','')"">Delete</a>
  1274. </td>
  1275. </tr><tr>
  1276. <td colspan=""2""><table border=""0"">
  1277. <tr>
  1278. <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>
  1279. </tr>
  1280. </table></td>
  1281. </tr>
  1282. </table>
  1283. </div>";
  1284. HtmlDiff.AssertAreEqual (origHtml, newHtml, "BeforeEditPostback");
  1285. //Edit button postback (change to edit mode - buttons "Update" and "Cancel" should appear.
  1286. FormRequest fr = new FormRequest (t.Response, "form1");
  1287. fr.Controls.Add ("__EVENTTARGET");
  1288. fr.Controls.Add ("__EVENTARGUMENT");
  1289. fr.Controls["__EVENTTARGET"].Value = "FormView1:EditButton";
  1290. fr.Controls["__EVENTARGUMENT"].Value = "";
  1291. t.Request = fr;
  1292. pageHTML = t.Run ();
  1293. newHtml = pageHTML.Substring (pageHTML.IndexOf ("start") + 5, pageHTML.IndexOf ("end") - pageHTML.IndexOf ("start") - 5);
  1294. origHtml = @" <div>
  1295. &nbsp;
  1296. <table cellspacing=""0"" border=""0"" id=""FormView1"" style=""border-collapse:collapse;"">
  1297. <tr>
  1298. <td colspan=""2"">
  1299. Enter First Name:<input name=""FormView1$FNameEdit"" type=""text"" value=""Mahesh"" id=""FormView1_FNameEdit"" /><br />
  1300. Enter Last Name:<input name=""FormView1$LNameEdit"" type=""text"" value=""Chand"" id=""FormView1_LNameEdit"" /><br />
  1301. <a id=""FormView1_UpdateButton"" href=""javascript:__doPostBack('FormView1$UpdateButton','')"">Update</a>
  1302. <a id=""FormView1_CancelUpdateButton"" href=""javascript:__doPostBack('FormView1$CancelUpdateButton','')"">Cancel</a>
  1303. </td>
  1304. </tr><tr>
  1305. <td colspan=""2""><table border=""0"">
  1306. <tr>
  1307. <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>
  1308. </tr>
  1309. </table></td>
  1310. </tr>
  1311. </table>
  1312. </div>";
  1313. HtmlDiff.AssertAreEqual (origHtml, newHtml, "AfterEditPostback");
  1314. //Update record postback
  1315. fr = new FormRequest (t.Response, "form1");
  1316. fr.Controls.Add ("__EVENTTARGET");
  1317. fr.Controls.Add ("__EVENTARGUMENT");
  1318. fr.Controls.Add ("FormView1:FNameEdit");
  1319. fr.Controls.Add ("FormView1:LNameEdit");
  1320. fr.Controls["__EVENTTARGET"].Value = "FormView1:UpdateButton";
  1321. fr.Controls["__EVENTARGUMENT"].Value = "";
  1322. fr.Controls["FormView1:FNameEdit"].Value = "Merav";
  1323. fr.Controls["FormView1:LNameEdit"].Value = "Test";
  1324. t.Request = fr;
  1325. pageHTML = t.Run ();
  1326. newHtml = pageHTML.Substring (pageHTML.IndexOf ("start") + 5, pageHTML.IndexOf ("end") - pageHTML.IndexOf ("start") - 5);
  1327. origHtml=@" <div>
  1328. &nbsp;
  1329. <table cellspacing=""0"" border=""0"" id=""FormView1"" style=""border-collapse:collapse;"">
  1330. <tr>
  1331. <td colspan=""2"">
  1332. <span id=""FormView1_ID"">1001</span>&nbsp;
  1333. <span id=""FormView1_LName"">Test</span>
  1334. <span id=""FormView1_FName"">Merav</span>&nbsp;
  1335. <a id=""FormView1_EditButton"" href=""javascript:__doPostBack('FormView1$EditButton','')"">Edit</a>
  1336. <a id=""FormView1_NewButton"" href=""javascript:__doPostBack('FormView1$NewButton','')"">New</a>
  1337. <a id=""FormView1_DeleteButton"" href=""javascript:__doPostBack('FormView1$DeleteButton','')"">Delete</a>
  1338. </td>
  1339. </tr><tr>
  1340. <td colspan=""2""><table border=""0"">
  1341. <tr>
  1342. <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>
  1343. </tr>
  1344. </table></td>
  1345. </tr>
  1346. </table>
  1347. </div>";
  1348. HtmlDiff.AssertAreEqual (origHtml, newHtml, "AfterUpdatePostback");
  1349. //Postback to return to Edit mode
  1350. fr = new FormRequest (t.Response, "form1");
  1351. fr.Controls.Add ("__EVENTTARGET");
  1352. fr.Controls.Add ("__EVENTARGUMENT");
  1353. fr.Controls["__EVENTTARGET"].Value = "FormView1:EditButton";
  1354. fr.Controls["__EVENTARGUMENT"].Value = "";
  1355. t.Request = fr;
  1356. pageHTML = t.Run ();
  1357. newHtml = pageHTML.Substring (pageHTML.IndexOf ("start") + 5, pageHTML.IndexOf ("end") - pageHTML.IndexOf ("start") - 5);
  1358. Assert.AreEqual (true, pageHTML.Contains ("Merav"), "EditModePostback1");
  1359. Assert.AreEqual (true, pageHTML.Contains ("CancelUpdateButton"), "EditModePostback2");
  1360. // Cancel edited record postback
  1361. fr = new FormRequest (t.Response, "form1");
  1362. fr.Controls.Add ("__EVENTTARGET");
  1363. fr.Controls.Add ("__EVENTARGUMENT");
  1364. fr.Controls.Add ("FormView1:FNameEdit");
  1365. fr.Controls.Add ("FormView1:LNameEdit");
  1366. fr.Controls["FormView1:FNameEdit"].Value = "EditFirstName";
  1367. fr.Controls["FormView1:LNameEdit"].Value = "EditLastName";
  1368. fr.Controls["__EVENTTARGET"].Value = "FormView1:CancelUpdateButton";
  1369. fr.Controls["__EVENTARGUMENT"].Value = "";
  1370. t.Request = fr;
  1371. pageHTML = t.Run ();
  1372. newHtml = pageHTML.Substring (pageHTML.IndexOf ("start") + 5, pageHTML.IndexOf ("end") - pageHTML.IndexOf ("start") - 5);
  1373. origHtml = @" <div>
  1374. &nbsp;
  1375. <table cellspacing=""0"" border=""0"" id=""FormView1"" style=""border-collapse:collapse;"">
  1376. <tr>
  1377. <td colspan=""2"">
  1378. <span id=""FormView1_ID"">1001</span>&nbsp;
  1379. <span id=""FormView1_LName"">Test</span>
  1380. <span id=""FormView1_FName"">Merav</span>&nbsp;
  1381. <a id=""FormView1_EditButton"" href=""javascript:__doPostBack('FormView1$EditButton','')"">Edit</a>
  1382. <a id=""FormView1_NewButton"" href=""javascript:__doPostBack('FormView1$NewButton','')"">New</a>
  1383. <a id=""FormView1_DeleteButton"" href=""javascript:__doPostBack('FormView1$DeleteButton','')"">Delete</a>
  1384. </td>
  1385. </tr><tr>
  1386. <td colspan=""2""><table border=""0"">
  1387. <tr>
  1388. <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>
  1389. </tr>
  1390. </table></td>
  1391. </tr>
  1392. </table>
  1393. </div>";
  1394. HtmlDiff.AssertAreEqual (origHtml, newHtml, "CancelEditedRecordPostback");
  1395. }
  1396. [Test]
  1397. [Category ("NotWorking")]
  1398. [Category ("NotDotNet")] // becaue Naming container: use "FormView1$....." for DotNet
  1399. public void FormView_InsertPostback ()
  1400. {
  1401. WebTest t = new WebTest ("FormViewInsertEditDelete.aspx");
  1402. string pageHTML = t.Run ();
  1403. Assert.AreEqual (true, pageHTML.Contains ("1001"), "BeforeInsert1");
  1404. Assert.AreEqual (true, pageHTML.Contains ("Mahesh"), "BeforeInsert2");
  1405. Assert.AreEqual (true, pageHTML.Contains ("Chand"), "BeforeInsert3");
  1406. Assert.AreEqual (false, pageHTML.Contains ("Page$4"), "BeforeInsert4");
  1407. FormRequest fr = new FormRequest (t.Response, "form1");
  1408. fr.Controls.Add ("__EVENTTARGET");
  1409. fr.Controls.Add ("__EVENTARGUMENT");
  1410. fr.Controls["__EVENTTARGET"].Value = "FormView1:NewButton";
  1411. fr.Controls["__EVENTARGUMENT"].Value = "";
  1412. t.Request = fr;
  1413. pageHTML = t.Run ();
  1414. string newHtml = pageHTML.Substring (pageHTML.IndexOf ("start") + 5, pageHTML.IndexOf ("end") - pageHTML.IndexOf ("start") - 5);
  1415. string origHtml = @" <div>
  1416. &nbsp;
  1417. <table cellspacing=""0"" border=""0"" id=""FormView1"" style=""border-collapse:collapse;"">
  1418. <tr>
  1419. <td colspan=""2"">
  1420. Insert ID:
  1421. <input name=""FormView1$IDInsert"" type=""text"" id=""FormView1_IDInsert"" /><br />
  1422. Insert First Name:
  1423. <input name=""FormView1$FNameInsert"" type=""text"" id=""FormView1_FNameInsert"" />
  1424. <br />
  1425. Insert Last Name:&nbsp;
  1426. <input name=""FormView1$LNameInsert"" type=""text"" id=""FormView1_LNameInsert"" />
  1427. <a id=""FormView1_InsertButton"" href=""javascript:__doPostBack('FormView1$InsertButton','')"">Insert</a>
  1428. <a id=""FormView1_CancelInsertButton"" href=""javascript:__doPostBack('FormView1$CancelInsertButton','')"">Cancel</a>
  1429. </td>
  1430. </tr>
  1431. </table>
  1432. </div>";
  1433. HtmlDiff.AssertAreEqual (origHtml, newHtml, "InsertPostback");
  1434. //Insert new record
  1435. fr = new FormRequest (t.Response, "form1");
  1436. fr.Controls.Add ("__EVENTTARGET");
  1437. fr.Controls.Add ("__EVENTARGUMENT");
  1438. fr.Controls.Add ("FormView1:IDInsert");
  1439. fr.Controls.Add ("FormView1:FNameInsert");
  1440. fr.Controls.Add ("FormView1:LNameInsert");
  1441. fr.Controls["FormView1:IDInsert"].Value = "33";
  1442. fr.Controls["FormView1:FNameInsert"].Value = "InsertFirstName";
  1443. fr.Controls["FormView1:LNameInsert"].Value ="InsertLastName";
  1444. fr.Controls["__EVENTTARGET"].Value = "FormView1:InsertButton";
  1445. fr.Controls["__EVENTARGUMENT"].Value = "";
  1446. t.Request = fr;
  1447. pageHTML = t.Run ();
  1448. Assert.AreEqual (true, pageHTML.Contains ("1001"), "AfterInsert1");
  1449. Assert.AreEqual (true, pageHTML.Contains ("Mahesh"), "AfterInsert2");
  1450. Assert.AreEqual (true, pageHTML.Contains ("Chand"), "AfterInsert3");
  1451. Assert.AreEqual (true, pageHTML.Contains ("Page$4"), "AfterInsert4");
  1452. //Checking that the inserted record appears on page 4.
  1453. fr = new FormRequest (t.Response, "form1");
  1454. fr.Controls.Add ("__EVENTTARGET");
  1455. fr.Controls.Add ("__EVENTARGUMENT");
  1456. fr.Controls["__EVENTTARGET"].Value = "FormView1";
  1457. fr.Controls["__EVENTARGUMENT"].Value = "Page$4";
  1458. t.Request = fr;
  1459. pageHTML = t.Run ();
  1460. Assert.AreEqual (true, pageHTML.Contains ("33"), "AfterInsert1");
  1461. Assert.AreEqual (true, pageHTML.Contains ("InsertLastName"), "AfterInsert2");
  1462. Assert.AreEqual (true, pageHTML.Contains ("InsertFirstName"), "AfterInsert3");
  1463. }
  1464. [Test]
  1465. [Category ("NotDotNet")] // becaue Naming container: use "FormView1$DeleteButton" for DotNet
  1466. public void FormView_DeleteAndEmptyTemplatePostback ()
  1467. {
  1468. WebTest t = new WebTest ("FormViewInsertEditDelete.aspx");
  1469. string pageHTML = t.Run ();
  1470. //Before Delete
  1471. Assert.AreEqual (true, pageHTML.Contains ("1001"), "BeforeDelete1");
  1472. Assert.AreEqual (true, pageHTML.Contains ("Mahesh"), "BeforeDelete2");
  1473. Assert.AreEqual (true, pageHTML.Contains ("Chand"), "BeforeDelete3");
  1474. Assert.AreEqual (true, pageHTML.Contains ("Page$3"), "BeforeDelete4");
  1475. //Delete First Item
  1476. FormRequest fr = new FormRequest (t.Response, "form1");
  1477. fr.Controls.Add ("__EVENTTARGET");
  1478. fr.Controls.Add ("__EVENTARGUMENT");
  1479. fr.Controls["__EVENTTARGET"].Value = "FormView1:DeleteButton";
  1480. fr.Controls["__EVENTARGUMENT"].Value = "";
  1481. t.Request = fr;
  1482. pageHTML = t.Run ();
  1483. Assert.AreEqual (true, pageHTML.Contains ("1002"), "AfterFirstDelete1");
  1484. Assert.AreEqual (true, pageHTML.Contains ("Talmadge"), "AfterFirstDelete2");
  1485. Assert.AreEqual (true, pageHTML.Contains ("Melanie"), "AfterFirstDelete3");
  1486. Assert.AreEqual (true, pageHTML.Contains ("Page$2"), "AfterFirstDelete4");
  1487. Assert.AreEqual (false, pageHTML.Contains ("Page$3"), "AfterFirstDelete5");
  1488. //Delete second item
  1489. fr = new FormRequest (t.Response, "form1");
  1490. fr.Controls.Add ("__EVENTTARGET");
  1491. fr.Controls.Add ("__EVENTARGUMENT");
  1492. fr.Controls["__EVENTTARGET"].Value = "FormView1:DeleteButton";
  1493. fr.Controls["__EVENTARGUMENT"].Value = "";
  1494. t.Request = fr;
  1495. pageHTML = t.Run ();
  1496. Assert.AreEqual (true, pageHTML.Contains ("1003"), "AfterSecondDelete1");
  1497. Assert.AreEqual (true, pageHTML.Contains ("Bansal"), "AfterSecondDelete2");
  1498. Assert.AreEqual (true, pageHTML.Contains ("Vinay"), "AfterSecondDelete3");
  1499. Assert.AreEqual (false, pageHTML.Contains ("Page$2"), "AfterSecondDelete4");
  1500. //Delete last item and checking that the EmptyDataTemplate appears.
  1501. fr = new FormRequest (t.Response, "form1");
  1502. fr.Controls.Add ("__EVENTTARGET");
  1503. fr.Controls.Add ("__EVENTARGUMENT");
  1504. fr.Controls["__EVENTTARGET"].Value = "FormView1:DeleteButton";
  1505. fr.Controls["__EVENTARGUMENT"].Value = "";
  1506. t.Request = fr;
  1507. pageHTML = t.Run ();
  1508. Assert.AreEqual (true, pageHTML.Contains ("FormView1_Label1"), "EmptyTemplateTest1");
  1509. Assert.AreEqual (true, pageHTML.Contains ("The Database is empty"), "EmptyTemplateTest2");
  1510. }
  1511. [Test]
  1512. public void FormView_CurrentMode () {
  1513. FormView view = new FormView ();
  1514. view.DefaultMode = FormViewMode.Insert;
  1515. Assert.AreEqual (FormViewMode.Insert, view.CurrentMode, "FormView_CurrentMode#1");
  1516. view.ChangeMode (FormViewMode.Edit);
  1517. Assert.AreEqual (FormViewMode.Edit, view.CurrentMode, "FormView_CurrentMode#2");
  1518. }
  1519. [Test]
  1520. public void FormView_CreateDataSourceSelectArguments2 () {
  1521. DataSourceView view;
  1522. Page p = new Page ();
  1523. Poker dv = new Poker ();
  1524. p.Controls.Add (dv);
  1525. ObjectDataSource data = new ObjectDataSource ();
  1526. data.TypeName = typeof (DataSourceObject).AssemblyQualifiedName;
  1527. data.SelectMethod = "GetList";
  1528. data.SortParameterName = "sortExpression";
  1529. DataSourceSelectArguments arg;
  1530. p.Controls.Add (data);
  1531. dv.DataSource = data;
  1532. dv.DataBind ();
  1533. arg = dv.DoCreateDataSourceSelectArguments ();
  1534. Assert.IsTrue (arg.Equals (DataSourceSelectArguments.Empty), "Default");
  1535. dv.AllowPaging = true;
  1536. dv.PageIndex = 2;
  1537. arg = dv.DoCreateDataSourceSelectArguments ();
  1538. view = dv.DoGetData ();
  1539. Assert.IsFalse (view.CanPage);
  1540. Assert.IsTrue (view.CanRetrieveTotalRowCount);
  1541. Assert.IsTrue (arg.Equals (DataSourceSelectArguments.Empty), "AllowPaging = true, CanPage = false, CanRetrieveTotalRowCount = true");
  1542. // make DataSourceView.CanPage = true
  1543. data.EnablePaging = true;
  1544. arg = dv.DoCreateDataSourceSelectArguments ();
  1545. view = dv.DoGetData ();
  1546. Assert.IsTrue (view.CanPage);
  1547. Assert.IsFalse (view.CanRetrieveTotalRowCount);
  1548. Assert.IsTrue (arg.Equals (new DataSourceSelectArguments (2, -1)), "AllowPaging = true, CanPage = true, CanRetrieveTotalRowCount = false");
  1549. dv.AllowPaging = false;
  1550. arg = dv.DoCreateDataSourceSelectArguments ();
  1551. Assert.IsTrue (arg.Equals (DataSourceSelectArguments.Empty), "AllowPaging = false, CanPage = true, CanRetrieveTotalRowCount = false");
  1552. // make DataSourceView.CanRetrieveTotalRowCount = true
  1553. data.SelectCountMethod = "GetCount";
  1554. arg = dv.DoCreateDataSourceSelectArguments ();
  1555. Assert.IsTrue (arg.Equals (DataSourceSelectArguments.Empty), "AllowPaging = false, CanPage = true, CanRetrieveTotalRowCount = true");
  1556. dv.AllowPaging = true;
  1557. arg = dv.DoCreateDataSourceSelectArguments ();
  1558. DataSourceSelectArguments arg1 = new DataSourceSelectArguments (2, 1);
  1559. arg1.RetrieveTotalRowCount = true;
  1560. view = dv.DoGetData ();
  1561. Assert.IsTrue (view.CanPage);
  1562. Assert.IsTrue (view.CanRetrieveTotalRowCount);
  1563. Assert.IsTrue (arg.Equals (arg1), "AllowPaging = true, CanPage = true, CanRetrieveTotalRowCount = true");
  1564. }
  1565. [Test]
  1566. public void FormView_GetPostBackOptions () {
  1567. FormView fv = new FormView ();
  1568. fv.Page = new Page ();
  1569. IButtonControl btn = new Button ();
  1570. btn.CausesValidation = false;
  1571. Assert.IsFalse (btn.CausesValidation);
  1572. Assert.AreEqual (String.Empty, btn.CommandName);
  1573. Assert.AreEqual (String.Empty, btn.CommandArgument);
  1574. Assert.AreEqual (String.Empty, btn.PostBackUrl);
  1575. Assert.AreEqual (String.Empty, btn.ValidationGroup);
  1576. PostBackOptions options = ((IPostBackContainer) fv).GetPostBackOptions (btn);
  1577. Assert.IsFalse (options.PerformValidation);
  1578. Assert.IsFalse (options.AutoPostBack);
  1579. Assert.IsFalse (options.TrackFocus);
  1580. Assert.IsTrue (options.ClientSubmit);
  1581. Assert.IsTrue (options.RequiresJavaScriptProtocol);
  1582. Assert.AreEqual ("$", options.Argument);
  1583. Assert.AreEqual (null, options.ActionUrl);
  1584. Assert.AreEqual (null, options.ValidationGroup);
  1585. Assert.IsTrue (object.ReferenceEquals (options.TargetControl, fv));
  1586. btn.ValidationGroup = "VG";
  1587. btn.CommandName = "CMD";
  1588. btn.CommandArgument = "ARG";
  1589. btn.PostBackUrl = "Page.aspx";
  1590. Assert.IsFalse (btn.CausesValidation);
  1591. Assert.AreEqual ("CMD", btn.CommandName);
  1592. Assert.AreEqual ("ARG", btn.CommandArgument);
  1593. Assert.AreEqual ("Page.aspx", btn.PostBackUrl);
  1594. Assert.AreEqual ("VG", btn.ValidationGroup);
  1595. options = ((IPostBackContainer) fv).GetPostBackOptions (btn);
  1596. Assert.IsFalse (options.PerformValidation);
  1597. Assert.IsFalse (options.AutoPostBack);
  1598. Assert.IsFalse (options.TrackFocus);
  1599. Assert.IsTrue (options.ClientSubmit);
  1600. Assert.IsTrue (options.RequiresJavaScriptProtocol);
  1601. Assert.AreEqual ("CMD$ARG", options.Argument);
  1602. Assert.AreEqual (null, options.ActionUrl);
  1603. Assert.AreEqual (null, options.ValidationGroup);
  1604. }
  1605. [Test]
  1606. [ExpectedException (typeof (InvalidOperationException))]
  1607. public void FormView_GetPostBackOptions_CausesValidation () {
  1608. FormView fv = new FormView ();
  1609. fv.Page = new Page ();
  1610. IButtonControl btn = new Button ();
  1611. Assert.IsTrue (btn.CausesValidation);
  1612. Assert.AreEqual (String.Empty, btn.CommandName);
  1613. Assert.AreEqual (String.Empty, btn.CommandArgument);
  1614. Assert.AreEqual (String.Empty, btn.PostBackUrl);
  1615. Assert.AreEqual (String.Empty, btn.ValidationGroup);
  1616. PostBackOptions options = ((IPostBackContainer) fv).GetPostBackOptions (btn);
  1617. }
  1618. [Test]
  1619. [ExpectedException (typeof (ArgumentNullException))]
  1620. public void FormView_GetPostBackOptions_Null_Argument () {
  1621. FormView fv = new FormView ();
  1622. fv.Page = new Page ();
  1623. PostBackOptions options = ((IPostBackContainer) fv).GetPostBackOptions (null);
  1624. }
  1625. }
  1626. public class TestMyData
  1627. {
  1628. static IList<int> str = (IList<int>) new int[] { 1, 2, 3, 4, 5, 6 };
  1629. public static IList<int> GetMyList ()
  1630. {
  1631. return str;
  1632. }
  1633. public static int UpdateList (int index,int value)
  1634. {
  1635. str[index] = value;
  1636. return str[index];
  1637. }
  1638. public static int InsertList (int value)
  1639. {
  1640. str.Add (value);
  1641. return value;
  1642. }
  1643. public static void DeleteList (int value)
  1644. {
  1645. str.Remove (value);
  1646. }
  1647. }
  1648. public class MyTemplate : ITemplate
  1649. {
  1650. Label l = new Label ();
  1651. #region ITemplate Members
  1652. public void InstantiateIn (Control container)
  1653. {
  1654. container.Controls.Add (l);
  1655. }
  1656. public void SetDataItem (object value)
  1657. {
  1658. l.Text = value.ToString ();
  1659. }
  1660. #endregion
  1661. }
  1662. public class FormViewDataObject
  1663. {
  1664. public static DataTable ds = CreateDataTable();
  1665. public static DataTable Select()
  1666. {
  1667. return ds;
  1668. }
  1669. public static DataTable Delete(string ID, string FName, string LName)
  1670. {
  1671. DataRow dr = ds.Rows.Find(ID);
  1672. if (dr != null)
  1673. {
  1674. ds.Rows.Remove(dr);
  1675. }
  1676. return ds;
  1677. }
  1678. public static DataTable Insert(string ID, string FName, string LName)
  1679. {
  1680. DataRow dr = ds.NewRow();
  1681. dr["ID"] = ID;
  1682. dr["FName"] = FName;
  1683. dr["LName"] = LName;
  1684. ds.Rows.Add(dr);
  1685. return ds;
  1686. }
  1687. public static DataTable Update(string ID, string FName, string LName)
  1688. {
  1689. DataRow dr = ds.Rows.Find(ID);
  1690. if (dr == null)
  1691. {
  1692. Label lbl = new Label();
  1693. lbl.Text = "ID doesn't exist ";
  1694. return ds;
  1695. }
  1696. dr["FName"] = FName;
  1697. dr["LName"] = LName;
  1698. return ds;
  1699. }
  1700. public static DataTable CreateDataTable()
  1701. {
  1702. DataTable aTable = new DataTable("A");
  1703. DataColumn dtCol;
  1704. DataRow dtRow;
  1705. // Create ID column and add to the DataTable.
  1706. dtCol = new DataColumn();
  1707. dtCol.DataType = Type.GetType("System.Int32");
  1708. dtCol.ColumnName = "ID";
  1709. dtCol.AutoIncrement = true;
  1710. dtCol.Caption = "ID";
  1711. dtCol.ReadOnly = true;
  1712. dtCol.Unique = true;
  1713. aTable.Columns.Add(dtCol);
  1714. // Create Name column and add to the table
  1715. dtCol = new DataColumn();
  1716. dtCol.DataType = Type.GetType("System.String");
  1717. dtCol.ColumnName = "FName";
  1718. dtCol.AutoIncrement = false;
  1719. dtCol.Caption = "First Name";
  1720. dtCol.ReadOnly = false;
  1721. dtCol.Unique = false;
  1722. aTable.Columns.Add(dtCol);
  1723. // Create Last Name column and add to the table.
  1724. dtCol = new DataColumn();
  1725. dtCol.DataType = Type.GetType("System.String");
  1726. dtCol.ColumnName = "LName";
  1727. dtCol.AutoIncrement = false;
  1728. dtCol.Caption = "Last Name";
  1729. dtCol.ReadOnly = false;
  1730. dtCol.Unique = false;
  1731. aTable.Columns.Add(dtCol);
  1732. // Create three rows to the table
  1733. dtRow = aTable.NewRow();
  1734. dtRow["ID"] = 1001;
  1735. dtRow["FName"] = "Mahesh";
  1736. dtRow["LName"] = "Chand";
  1737. aTable.Rows.Add(dtRow);
  1738. dtRow = aTable.NewRow();
  1739. dtRow["ID"] = 1002;
  1740. dtRow["FName"] = "Melanie";
  1741. dtRow["LName"] = "Talmadge";
  1742. aTable.Rows.Add(dtRow);
  1743. dtRow = aTable.NewRow();
  1744. dtRow["ID"] = 1003;
  1745. dtRow["FName"] = "Vinay";
  1746. dtRow["LName"] = "Bansal";
  1747. aTable.Rows.Add(dtRow);
  1748. aTable.PrimaryKey = new DataColumn[] { aTable.Columns["ID"] };
  1749. return aTable;
  1750. }
  1751. }
  1752. }
  1753. #endif