}
- //ToDo: Postbacks - Insert, Delete and Edit.
+ [Test]
+ [Category ("NotWorking")]
+ public void FormView_EditPostback ()
+ {
+ WebTest t = new WebTest ("FormViewInsertEditDelete.aspx");
+ string pageHTML = t.Run ();
+ string newHtml = pageHTML.Substring (pageHTML.IndexOf ("start") + 5, pageHTML.IndexOf ("end") - pageHTML.IndexOf ("start") - 5);
+ string origHtml = @" <div>
+
+ <table cellspacing=""0"" border=""0"" id=""FormView1"" style=""border-collapse:collapse;"">
+ <tr>
+ <td colspan=""2"">
+ <span id=""FormView1_ID"">1001</span>
+ <span id=""FormView1_LName"">Chand</span>
+ <span id=""FormView1_FName"">Mahesh</span>
+ <a id=""FormView1_EditButton"" href=""javascript:__doPostBack('FormView1$EditButton','')"">Edit</a>
+ <a id=""FormView1_NewButton"" href=""javascript:__doPostBack('FormView1$NewButton','')"">New</a>
+ <a id=""FormView1_DeleteButton"" href=""javascript:__doPostBack('FormView1$DeleteButton','')"">Delete</a>
+ </td>
+ </tr><tr>
+ <td colspan=""2""><table border=""0"">
+ <tr>
+ <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>
+ </tr>
+ </table></td>
+ </tr>
+ </table>
+ </div>";
+ HtmlDiff.AssertAreEqual (origHtml, newHtml, "BeforeEditPostback");
+
+ //Edit button postback (change to edit mode - buttons "Update" and "Cancel" should appear.
+
+ FormRequest fr = new FormRequest (t.Response, "form1");
+ fr.Controls.Add ("__EVENTTARGET");
+ fr.Controls.Add ("__EVENTARGUMENT");
+ fr.Controls["__EVENTTARGET"].Value = "FormView1$EditButton";
+ fr.Controls["__EVENTARGUMENT"].Value = "";
+ t.Request = fr;
+ pageHTML = t.Run ();
+ newHtml = pageHTML.Substring (pageHTML.IndexOf ("start") + 5, pageHTML.IndexOf ("end") - pageHTML.IndexOf ("start") - 5);
+ origHtml = @" <div>
+
+ <table cellspacing=""0"" border=""0"" id=""FormView1"" style=""border-collapse:collapse;"">
+ <tr>
+ <td colspan=""2"">
+ Enter First Name:<input name=""FormView1$FNameEdit"" type=""text"" value=""Mahesh"" id=""FormView1_FNameEdit"" /><br />
+ Enter Last Name:<input name=""FormView1$LNameEdit"" type=""text"" value=""Chand"" id=""FormView1_LNameEdit"" /><br />
+ <a id=""FormView1_UpdateButton"" href=""javascript:__doPostBack('FormView1$UpdateButton','')"">Update</a>
+ <a id=""FormView1_CancelUpdateButton"" href=""javascript:__doPostBack('FormView1$CancelUpdateButton','')"">Cancel</a>
+ </td>
+ </tr><tr>
+ <td colspan=""2""><table border=""0"">
+ <tr>
+ <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>
+ </tr>
+ </table></td>
+ </tr>
+ </table>
+ </div>";
+ HtmlDiff.AssertAreEqual (origHtml, newHtml, "AfterEditPostback");
+
+ //Update record postback
+
+ fr = new FormRequest (t.Response, "form1");
+ fr.Controls.Add ("__EVENTTARGET");
+ fr.Controls.Add ("__EVENTARGUMENT");
+ fr.Controls.Add ("FormView1$FNameEdit");
+ fr.Controls.Add ("FormView1$LNameEdit");
+ fr.Controls["__EVENTTARGET"].Value = "FormView1$UpdateButton";
+ fr.Controls["__EVENTARGUMENT"].Value = "";
+ fr.Controls["FormView1$FNameEdit"].Value = "Merav";
+ fr.Controls["FormView1$LNameEdit"].Value = "Test";
+ t.Request = fr;
+ pageHTML = t.Run ();
+ newHtml = pageHTML.Substring (pageHTML.IndexOf ("start") + 5, pageHTML.IndexOf ("end") - pageHTML.IndexOf ("start") - 5);
+ origHtml=@" <div>
+
+ <table cellspacing=""0"" border=""0"" id=""FormView1"" style=""border-collapse:collapse;"">
+ <tr>
+ <td colspan=""2"">
+ <span id=""FormView1_ID"">1001</span>
+ <span id=""FormView1_LName"">Test</span>
+ <span id=""FormView1_FName"">Merav</span>
+ <a id=""FormView1_EditButton"" href=""javascript:__doPostBack('FormView1$EditButton','')"">Edit</a>
+ <a id=""FormView1_NewButton"" href=""javascript:__doPostBack('FormView1$NewButton','')"">New</a>
+ <a id=""FormView1_DeleteButton"" href=""javascript:__doPostBack('FormView1$DeleteButton','')"">Delete</a>
+ </td>
+ </tr><tr>
+ <td colspan=""2""><table border=""0"">
+ <tr>
+ <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>
+ </tr>
+ </table></td>
+ </tr>
+ </table>
+ </div>";
+ HtmlDiff.AssertAreEqual (origHtml, newHtml, "AfterUpdatePostback");
+
+ //Postback to return to Edit mode
+ fr = new FormRequest (t.Response, "form1");
+ fr.Controls.Add ("__EVENTTARGET");
+ fr.Controls.Add ("__EVENTARGUMENT");
+ fr.Controls["__EVENTTARGET"].Value = "FormView1$EditButton";
+ fr.Controls["__EVENTARGUMENT"].Value = "";
+ t.Request = fr;
+ pageHTML = t.Run ();
+ newHtml = pageHTML.Substring (pageHTML.IndexOf ("start") + 5, pageHTML.IndexOf ("end") - pageHTML.IndexOf ("start") - 5);
+ Assert.AreEqual (true, pageHTML.Contains ("Merav"), "EditModePostback1");
+ Assert.AreEqual (true, pageHTML.Contains ("CancelUpdateButton"), "EditModePostback2");
+
+ // Cancel edited record postback
+ fr = new FormRequest (t.Response, "form1");
+ fr.Controls.Add ("__EVENTTARGET");
+ fr.Controls.Add ("__EVENTARGUMENT");
+ fr.Controls.Add ("FormView1$FNameEdit");
+ fr.Controls.Add ("FormView1$LNameEdit");
+ fr.Controls["FormView1$FNameEdit"].Value = "EditFirstName";
+ fr.Controls["FormView1$LNameEdit"].Value = "EditLastName";
+ fr.Controls["__EVENTTARGET"].Value = "FormView1$CancelUpdateButton";
+ fr.Controls["__EVENTARGUMENT"].Value = "";
+ t.Request = fr;
+ pageHTML = t.Run ();
+ newHtml = pageHTML.Substring (pageHTML.IndexOf ("start") + 5, pageHTML.IndexOf ("end") - pageHTML.IndexOf ("start") - 5);
+ origHtml = @" <div>
+
+ <table cellspacing=""0"" border=""0"" id=""FormView1"" style=""border-collapse:collapse;"">
+ <tr>
+ <td colspan=""2"">
+ <span id=""FormView1_ID"">1001</span>
+ <span id=""FormView1_LName"">Test</span>
+ <span id=""FormView1_FName"">Merav</span>
+ <a id=""FormView1_EditButton"" href=""javascript:__doPostBack('FormView1$EditButton','')"">Edit</a>
+ <a id=""FormView1_NewButton"" href=""javascript:__doPostBack('FormView1$NewButton','')"">New</a>
+ <a id=""FormView1_DeleteButton"" href=""javascript:__doPostBack('FormView1$DeleteButton','')"">Delete</a>
+ </td>
+ </tr><tr>
+ <td colspan=""2""><table border=""0"">
+ <tr>
+ <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>
+ </tr>
+ </table></td>
+ </tr>
+ </table>
+ </div>";
+ HtmlDiff.AssertAreEqual (origHtml, newHtml, "CancelEditedRecordPostback");
+
+ }
+
+ [Test]
+ [Category ("NotWorking")]
+ public void FormView_InsertPostback ()
+ {
+ WebTest t = new WebTest ("FormViewInsertEditDelete.aspx");
+ string pageHTML = t.Run ();
+ Assert.AreEqual (true, pageHTML.Contains ("1001"), "BeforeInsert1");
+ Assert.AreEqual (true, pageHTML.Contains ("Mahesh"), "BeforeInsert2");
+ Assert.AreEqual (true, pageHTML.Contains ("Chand"), "BeforeInsert3");
+ Assert.AreEqual (false, pageHTML.Contains ("Page$4"), "BeforeInsert4");
+ FormRequest fr = new FormRequest (t.Response, "form1");
+ fr.Controls.Add ("__EVENTTARGET");
+ fr.Controls.Add ("__EVENTARGUMENT");
+ fr.Controls["__EVENTTARGET"].Value = "FormView1$NewButton";
+ fr.Controls["__EVENTARGUMENT"].Value = "";
+ t.Request = fr;
+ pageHTML = t.Run ();
+ string newHtml = pageHTML.Substring (pageHTML.IndexOf ("start") + 5, pageHTML.IndexOf ("end") - pageHTML.IndexOf ("start") - 5);
+ string origHtml = @" <div>
+
+ <table cellspacing=""0"" border=""0"" id=""FormView1"" style=""border-collapse:collapse;"">
+ <tr>
+ <td colspan=""2"">
+ Insert ID:
+ <input name=""FormView1$IDInsert"" type=""text"" id=""FormView1_IDInsert"" /><br />
+ Insert First Name:
+ <input name=""FormView1$FNameInsert"" type=""text"" id=""FormView1_FNameInsert"" />
+ <br />
+ Insert Last Name:
+ <input name=""FormView1$LNameInsert"" type=""text"" id=""FormView1_LNameInsert"" />
+ <a id=""FormView1_InsertButton"" href=""javascript:__doPostBack('FormView1$InsertButton','')"">Insert</a>
+ <a id=""FormView1_CancelInsertButton"" href=""javascript:__doPostBack('FormView1$CancelInsertButton','')"">Cancel</a>
+ </td>
+ </tr>
+ </table>
+ </div>";
+ HtmlDiff.AssertAreEqual (origHtml, newHtml, "InsertPostback");
+
+ //Insert new record
+
+ fr = new FormRequest (t.Response, "form1");
+ fr.Controls.Add ("__EVENTTARGET");
+ fr.Controls.Add ("__EVENTARGUMENT");
+ fr.Controls.Add ("FormView1$IDInsert");
+ fr.Controls.Add ("FormView1$FNameInsert");
+ fr.Controls.Add ("FormView1$LNameInsert");
+ fr.Controls["FormView1$IDInsert"].Value = "33";
+ fr.Controls["FormView1$FNameInsert"].Value = "InsertFirstName";
+ fr.Controls["FormView1$LNameInsert"].Value ="InsertLastName";
+ fr.Controls["__EVENTTARGET"].Value = "FormView1$InsertButton";
+ fr.Controls["__EVENTARGUMENT"].Value = "";
+ t.Request = fr;
+ pageHTML = t.Run ();
+ Assert.AreEqual (true, pageHTML.Contains ("1001"), "AfterInsert1");
+ Assert.AreEqual (true, pageHTML.Contains ("Mahesh"), "AfterInsert2");
+ Assert.AreEqual (true, pageHTML.Contains ("Chand"), "AfterInsert3");
+ Assert.AreEqual (true, pageHTML.Contains ("Page$4"), "AfterInsert4");
+
+ //Checking that the inserted record appears on page 4.
+
+ fr = new FormRequest (t.Response, "form1");
+ fr.Controls.Add ("__EVENTTARGET");
+ fr.Controls.Add ("__EVENTARGUMENT");
+ fr.Controls["__EVENTTARGET"].Value = "FormView1";
+ fr.Controls["__EVENTARGUMENT"].Value = "Page$4";
+ t.Request = fr;
+ pageHTML = t.Run ();
+ Assert.AreEqual (true, pageHTML.Contains ("33"), "AfterInsert1");
+ Assert.AreEqual (true, pageHTML.Contains ("InsertLastName"), "AfterInsert2");
+ Assert.AreEqual (true, pageHTML.Contains ("InsertFirstName"), "AfterInsert3");
+
+ }
+
+ [Test]
+ [Category ("NotWorking")]
+ public void FormView_DeleteAndEmptyTemplatePostback ()
+ {
+ WebTest t = new WebTest ("FormViewInsertEditDelete.aspx");
+ string pageHTML = t.Run ();
+ //Before Delete
+ Assert.AreEqual (true, pageHTML.Contains ("1001"), "BeforeDelete1");
+ Assert.AreEqual (true, pageHTML.Contains ("Mahesh"), "BeforeDelete2");
+ Assert.AreEqual (true, pageHTML.Contains ("Chand"), "BeforeDelete3");
+ Assert.AreEqual (true, pageHTML.Contains ("Page$3"), "BeforeDelete4");
+ //Delete First Item
+ FormRequest fr = new FormRequest (t.Response, "form1");
+ fr.Controls.Add ("__EVENTTARGET");
+ fr.Controls.Add ("__EVENTARGUMENT");
+ fr.Controls["__EVENTTARGET"].Value = "FormView1$DeleteButton";
+ fr.Controls["__EVENTARGUMENT"].Value = "";
+ t.Request = fr;
+ pageHTML = t.Run ();
+ Assert.AreEqual (true, pageHTML.Contains ("1002"), "AfterFirstDelete1");
+ Assert.AreEqual (true, pageHTML.Contains ("Talmadge"), "AfterFirstDelete2");
+ Assert.AreEqual (true, pageHTML.Contains ("Melanie"), "AfterFirstDelete3");
+ Assert.AreEqual (true, pageHTML.Contains ("Page$2"), "AfterFirstDelete4");
+ Assert.AreEqual (false, pageHTML.Contains ("Page$3"), "AfterFirstDelete5");
+
+ //Delete second item
+
+ fr = new FormRequest (t.Response, "form1");
+ fr.Controls.Add ("__EVENTTARGET");
+ fr.Controls.Add ("__EVENTARGUMENT");
+ fr.Controls["__EVENTTARGET"].Value = "FormView1$DeleteButton";
+ fr.Controls["__EVENTARGUMENT"].Value = "";
+ t.Request = fr;
+ pageHTML = t.Run ();
+ Assert.AreEqual (true, pageHTML.Contains ("1003"), "AfterSecondDelete1");
+ Assert.AreEqual (true, pageHTML.Contains ("Bansal"), "AfterSecondDelete2");
+ Assert.AreEqual (true, pageHTML.Contains ("Vinay"), "AfterSecondDelete3");
+ Assert.AreEqual (false, pageHTML.Contains ("Page$2"), "AfterSecondDelete4");
+
+ //Delete last item and checking that the EmptyDataTemplate appears.
+
+ fr = new FormRequest (t.Response, "form1");
+ fr.Controls.Add ("__EVENTTARGET");
+ fr.Controls.Add ("__EVENTARGUMENT");
+ fr.Controls["__EVENTTARGET"].Value = "FormView1$DeleteButton";
+ fr.Controls["__EVENTARGUMENT"].Value = "";
+ t.Request = fr;
+ pageHTML = t.Run ();
+ Assert.AreEqual (true, pageHTML.Contains ("FormView1_Label1"), "EmptyTemplateTest1");
+ Assert.AreEqual (true, pageHTML.Contains ("The Database is empty"), "EmptyTemplateTest2");
+ }
+
--- /dev/null
+<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyPage.aspx.cs" Inherits="MyPage" %>\r
+\r
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r
+\r
+<html xmlns="http://www.w3.org/1999/xhtml" >\r
+<head runat="server">\r
+ <title>Untitled Page</title>\r
+</head>\r
+\r
+<body> \r
+<script runat="server">\r
+\r
+ protected void Page_Load (object sender, EventArgs e)\r
+ {\r
+ FormView1.DataKeyNames = new string[] { "ID" };\r
+ if (!IsPostBack) \r
+ MonoTests.System.Web.UI.WebControls.DataObject.ds = MonoTests.System.Web.UI.WebControls.DataObject.CreateDataTable (); \r
+ } \r
+ \r
+</script>\r
+ <form id="form1" runat="server"> \r
+ start \r
+ <div>\r
+ \r
+ <asp:FormView ID="FormView1" runat="server" AllowPaging="True" DataSourceID="ObjectDataSource1" >\r
+ <ItemTemplate>\r
+ <asp:Label ID="ID" runat="server" Text='<%# Eval("ID") %>' ></asp:Label> \r
+ <asp:Label ID="LName" runat="server" Text='<%# Eval("LName") %>'></asp:Label> \r
+ <asp:Label ID="FName" runat="server" Text='<%# Eval("FName") %>'></asp:Label> \r
+ <asp:LinkButton ID="EditButton" runat="server" CommandName='<%# "Edit" %>' Text='<%# "Edit" %>'></asp:LinkButton>\r
+ <asp:LinkButton ID="NewButton" runat="server" CommandName='<%# "New" %>' Text='<%# "New" %>'></asp:LinkButton>\r
+ <asp:LinkButton ID="DeleteButton" runat="server" CommandName='<%# "Delete" %>' Text='<%# "Delete" %>'></asp:LinkButton>\r
+ </ItemTemplate>\r
+ <EditItemTemplate> \r
+ Enter First Name:<asp:TextBox ID="FNameEdit" Text='<%# Bind("FName") %>' runat="server"></asp:TextBox><br />\r
+ Enter Last Name:<asp:TextBox ID="LNameEdit" runat="server" Text='<%# Bind("LName") %>'></asp:TextBox><br />\r
+ <asp:LinkButton ID="UpdateButton" runat="server" CommandName='<%# "Update" %>' Text='<%# "Update" %>'></asp:LinkButton>\r
+ <asp:LinkButton ID="CancelUpdateButton" runat="server" CommandName='<%# "Cancel" %>' Text='<%# "Cancel" %>'></asp:LinkButton>\r
+ </EditItemTemplate>\r
+ <InsertItemTemplate>\r
+ Insert ID:\r
+ <asp:TextBox ID="IDInsert" runat="server" Text='<%# Bind("ID") %>'></asp:TextBox><br />\r
+ Insert First Name:\r
+ <asp:TextBox ID="FNameInsert" runat="server" Text='<%# Bind("FName") %>'></asp:TextBox>\r
+ <br />\r
+ Insert Last Name: \r
+ <asp:TextBox ID="LNameInsert" runat="server" Text='<%# Bind("LName") %>'></asp:TextBox>\r
+ <asp:LinkButton ID="InsertButton" runat="server" CommandName='<%# "Insert" %>' Text='<%# "Insert" %>'></asp:LinkButton>\r
+ <asp:LinkButton ID="CancelInsertButton" runat="server" CommandName='<%# "Cancel" %>' Text='<%# "Cancel" %>'></asp:LinkButton>\r
+ </InsertItemTemplate>\r
+ <EmptyDataTemplate>\r
+ <asp:Label ID="Label1" runat="server" Text='<%# "The Database is empty" %>'></asp:Label>\r
+ </EmptyDataTemplate>\r
+ </asp:FormView>\r
+ <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" DeleteMethod="Delete"\r
+ InsertMethod="Insert" SelectMethod="Select" TypeName="MonoTests.System.Web.UI.WebControls.DataObject"\r
+ UpdateMethod="Update">\r
+ <DeleteParameters>\r
+ <asp:Parameter Name="ID" Type="String" />\r
+ <asp:Parameter Name="FName" Type="String" />\r
+ <asp:Parameter Name="LName" Type="String" />\r
+ </DeleteParameters>\r
+ <UpdateParameters>\r
+ <asp:Parameter Name="ID" Type="String"/>\r
+ <asp:Parameter Name="FName" Type="String"/>\r
+ <asp:Parameter Name="LName" Type="String"/>\r
+ </UpdateParameters>\r
+ <InsertParameters>\r
+ <asp:Parameter Name="ID" Type="String" />\r
+ <asp:Parameter Name="FName" Type="String" />\r
+ <asp:Parameter Name="LName" Type="String" />\r
+ </InsertParameters>\r
+ </asp:ObjectDataSource>\r
+ \r
+ </div>\r
+ end\r
+ </form>\r
+</body>\r
+</html>\r