Forum Moderators: open

Message Too Old, No Replies

FormView issues

ChangeMode on postback

         

mattglet

5:24 pm on Feb 10, 2010 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



I'm finally seeing some benefits to FormView, and taking my first crack at them. However, I've got a problem and it seems like it should be a simple solution.


<asp:FormView ID = "FVTest" OnItemCreated = "FVTest_OnItemCreated" OnModeChanging = "FVTest_OnModeChanging" runat = "server">
<ItemTemplate>
<p>
<asp:Literal ID = "Firstname" runat = "server" />
<br><br>
<asp:Button ID = "EditButton" CommandName = "Edit" Text = "Edit" runat = "server" />
</p>
</ItemTemplate>

<EditItemTemplate>
<p>
<asp:Textbox ID = "Firstname" runat = "server" />
<br><br>
<asp:Button ID = "CancelButton" CommandName = "Cancel" Text = "Cancel" runat = "server" />
</p>
</EditItemTemplate>
</asp:FormView>



Code behind:

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
this.BindFV();
}
}

private void BindFV()
{
List<TestClass> TC = new List<TestClass>();
TC.Add(new TestClass());

FVTest.DataSource = TC;
FVTest.DataBind();
}

protected void FVTest_OnItemCreated(object sender, EventArgs e)
{
Response.Write("mode:" + FVTest.CurrentMode);

switch (FVTest.CurrentMode)
{
case FormViewMode.Edit:
TestClass TCEdit = (TestClass)FVTest.DataItem;
TextBox FirstnameEdit = (TextBox)FVTest.Row.FindControl("Firstname");

FirstnameEdit.Text = TCEdit.Firstname;
break;
case FormViewMode.ReadOnly:
TestClass TC = (TestClass)FVTest.DataItem;
Literal Firstname = (Literal)FVTest.FindControl("Firstname");

Firstname.Text = TC.Firstname;
break;
}
}

protected void FVTest_OnModeChanging(object sender, FormViewModeEventArgs e)
{
FVTest.ChangeMode(e.NewMode);
this.BindFV();
}


The problem is noted by my Response.Write in FVTest_OnItemCreated. When I click Edit (in ReadOnly mode), it seems as though FVTest_OnItemCreated is called twice because my output says "mode:ReadOnlymode:Edit" -- 2 outputs. I'd like it not to call OnItemCreated twice on postback. Can anyone see my problem?

Ocean10000

8:33 pm on Feb 10, 2010 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member Top Contributors Of The Month



Can you check in the page header that AutoEventWireup is set to false. If it is not set it to false and see if the problem continues.

Example:
<%@ Page Language="C#" AutoEventWireup="false" CodeFile="Default.aspx.cs" Inherits="_Default" %>


Reference:
AutoEventWireup Property [msdn.microsoft.com]

mattglet

9:00 pm on Feb 10, 2010 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



No dice, good idea though.