Reputation: 221
I have sent value through querystring to this Page. After that I am Unable to get Edit Mode on modechanging event. When I click Edit button, simply it postbacks and nothing happens. If Clicked edit second time it gives Error :
(Failed to load viewstate. The control tree into which viewstate is being loaded must match the control tree that was used to save viewstate during the previous request. For example, when adding controls dynamically, the controls added during a post-back must match the type and position of the controls added during the initial request.)
Please tell me where I am wrong.
Source Code -
<asp:FormView ID="formview1" runat="server" AllowPaging="true" Caption="FireBrigade" DataKeyNames="FireBrigadeID" OnModeChanging="formview1_ModeChanging"
OnPageIndexChanging="formview1_PageIndexChanging">
<ItemTemplate>
FireBrigade ID :<asp:Label ID="lblFID" runat="server" Text='<%# Eval("FireBrigadeID") %>'></asp:Label><br />
Name :<asp:Label ID="Label3" runat="server" Text='<%# Eval("FBName") %>'></asp:Label><br />
LatLong:<asp:Label ID="Label1" runat="server" Text='<%# Eval("LatLng") %>'></asp:Label><br />
Address: <asp:Label ID="Label2" runat="server" Text='<%# Eval("Address") %>'></asp:Label><br />
Contact: <asp:Label ID="Label4" runat="server" Text='<%# Eval("ContactNumber") %>'></asp:Label><br />
<asp:LinkButton ID="EditButton" Text="Edit" CommandName="Edit" RunAt="server"/>
</ItemTemplate>
<EditItemTemplate>
FireBrigade ID :<asp:TextBox ID="txtFID" runat="server" Text='<%# Bind("FireBrigadeID") %>'></asp:TextBox><br />
Name :<asp:TextBox ID="txtname" runat="server" Text='<%# Bind("FBName") %>'></asp:TextBox>
LatLong:<asp:TextBox ID="txtlatlong" runat="server" Text='<%# Bind("LatLng") %>'></asp:TextBox><br />
Address: <asp:DropDownList ID="ddlAddress" runat="server" OnDataBound="ddlAddress_DataBound" AppendDataBoundItems="true">
<asp:ListItem Text="Select" Value="0"></asp:ListItem>
</asp:DropDownList> <br />
Contact: <asp:TextBox ID="txtcontact" runat="server" Text='<%# Bind("ContactNumber") %>'></asp:TextBox><br />
<asp:LinkButton ID="UpdateButton"
Text="Update"
CommandName="Update"
runat="server" />
<asp:LinkButton ID="CancelUpdateButton"
Text="Cancel"
CommandName="Cancel"
runat="server" />
</EditItemTemplate>
</asp:FormView>
C# Code -
public partial class Fifthpage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
lblshow.Text = Request.QueryString["q"].ToString();
Dataset ds = new Dataset();
ds = bind();
da.Fill(ds);
formview1.DataSource = ds;
formview1.DataBind();
}
}
public DataSet bind()
{
SqlConnection con = new SqlConnection();
con.ConnectionString = "Data Source=SYSTEM-PC;Initial Catalog=DB;Integrated Security=True";
SqlCommand cmd = new SqlCommand("select * from FireBrigade",con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
return ds;
}
protected void ddlAddress_DataBound(object sender, EventArgs e)
{
DataSet ds = new DataSet();
ds = bind();
List<string> ls = new List<string>();
foreach (ListItem lst in ds.Tables[0].Rows)
{
//lst.Value = ds.Tables[0].Rows[0]["Address"].ToString();
ls.Add(ds.Tables[0].Rows[0]["Address"].ToString());
}
DropDownList ddladd = (DropDownList)formview1.FindControl("ddlAddress");
ddladd.DataSource = ls;
}
protected void formview1_ModeChanging(object sender, FormViewModeEventArgs e)
{
formview1.ChangeMode(e.NewMode);
bind();
}
protected void formview1_PageIndexChanging(object sender, FormViewPageEventArgs e)
{
formview1.PageIndex = e.NewPageIndex;
bind();
}
}
Upvotes: 0
Views: 1580
Reputation: 175
You should reassign the DataSource of FormView after editing, so just change your code as follow
protected void formview1_ModeChanging(object sender, FormViewModeEventArgs e)
{
formview1.ChangeMode(e.NewMode);
formview1.DataSource = bind();
formview1.DataBind();
}
Upvotes: 1