I have a web form containing a panel (collapsible) to allow me to add details of a "third party".
I also have a placeholder where at page_init, I loop through all persons saved, adding an instance of a user control (person) into this placeholder.
A "Save" button is available on the user control to allow updating the persons information.
If the user clicks this, the information is saved to the database,
HOWEVER the next post-back (be it navigation link, button click) causes the exception below
During the next post-back, page_init() executes (setting up of my custom usercontrols). It gets as far as page_preload() and throws the exception.
If I remove the collapsible panel there is no problem.
any ideas?
ERROR
——–
String was not recognized as a valid Boolean.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.FormatException: String was not recognized as a valid Boolean.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[FormatException: String was not recognized as a valid Boolean.]
System.Boolean.Parse(String value) +10757994
AjaxControlToolkit.CollapsiblePanelExtender.CollapsiblePanelExtender_ClientStateValuesLoaded(Object sender, EventArgs e) +164
AjaxControlToolkit.ExtenderControlBase.LoadClientStateValues() +290
AjaxControlToolkit.ExtenderControlBase.Page_PreLoad(Object sender, EventArgs e) +34
System.EventHandler.Invoke(Object sender, EventArgs e) +0
System.Web.UI.Page.OnPreLoad(EventArgs e) +121
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +699
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18044
**************************** CODE: ThirdParties.aspx ***********************************
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ThirdParties.aspx.cs" Inherits="ThirdParties" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
<%@ Register src="ThirdPartyUserControl.ascx" tagname="ThirdPartyUserControl" tagprefix="uc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<link href="Styles/Site.css" rel="stylesheet" type="text/css" />
<title>Third Parties</title>
</head>
<body>
<form id="form1" runat="server">
<div class = "container">
<div class="header">
<span style="float:left"> <asp:Label ID="lblClaim" runat="server" Text="Third Party details" CssClass="recordtitle1"></asp:Label> </span>
<span style="float:left"> <asp:Label ID="lblReadOnly" runat="server" Text="(Read Only)" CssClass="recordView" Visible="False"></asp:Label></span>
</div>
<div class="clear hideSkiplink">
<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal" onmenuitemclick="NavigationMenu_MenuItemClick">
<Items>
<asp:MenuItem Text="Main Menu" Value="Main Menu"></asp:MenuItem>
<asp:MenuItem Text="Notification Summary" Value="Claim Summary"></asp:MenuItem>
<asp:MenuItem Text="Log Out" Value="Log Out"></asp:MenuItem>
</Items>
</asp:Menu>
</div>
<div class="clear hideSkiplink">
<asp:Menu ID="NavigationMenu2" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal" onmenuitemclick="NavigationMenu2_MenuItemClick">
<Items>
<asp:MenuItem Text="Details" Value="Details"></asp:MenuItem>
<asp:MenuItem Text="Vehicle & Driver" Value="Vehicle & Driver" Selected="true"></asp:MenuItem>
<asp:MenuItem Text="Third Parties" Value="Third Parties"></asp:MenuItem>
<asp:MenuItem Text="Witnesses" Value="Witnesses"></asp:MenuItem>
<asp:MenuItem Text="Audit Log" Value="Audit Log"></asp:MenuItem>
</Items>
</asp:Menu>
</div>
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<div class="clear"></div> <br />
<asp:UpdatePanel ID="UpdatePanelAddTP" runat="server">
<ContentTemplate>
<asp:Panel ID="topPanel" runat="server" Width="300" CssClass="margin">
<asp:Label ID="lblInsert" runat="server" Text="Add third party" width="150" CssClass="headings"></asp:Label>
<asp:Image ID="imgToggle" runat="server" ImageUrl="~/Images/collapse.jpg" />
</asp:Panel>
<br />
<asp:Panel ID="bottomPanel" runat="server" CssClass="margin">
<div class="row">
<span class="rowlabel"> <asp:Label ID="Label35" runat="server" Text="Third Party" style="font-weight: 700; margin-bottom:10px"></asp:Label> </span>
<span class="rowtext">
<asp:TextBox ID="txtTPID" runat="server"
Enabled = "false" Width="60px" Visible="False"></asp:TextBox>
<asp:Label ID="Label8" runat="server"
Text="Notification ID" Visible="False"></asp:Label>
<asp:TextBox ID="txtNotificationID" runat="server"
Enabled = "false" Width="60px" Visible="False"></asp:TextBox></span>
</div>
<br />
<div class="row">
<span class="rowlabel"> <asp:Label ID="Label34" runat="server"
Text="Title"></asp:Label> </span>
<span class="rowtext">
<asp:DropDownList ID="dropTitle" CssClass="combo" Width="263px" runat="server" >
<asp:ListItem>Miss</asp:ListItem>
<asp:ListItem Selected="True">Mr</asp:ListItem>
<asp:ListItem>Mrs</asp:ListItem>
<asp:ListItem>Ms</asp:ListItem>
<asp:ListItem>Firm</asp:ListItem>
</asp:DropDownList>
</span>
</div>
<div class="row">
<span class="rowlabel"> <asp:Label ID="Label36" runat="server"
Text="Name"></asp:Label> </span>
<span class="rowtext">
<asp:TextBox ID="txtTPName" runat="server"
CssClass="textbox" MaxLength="50"></asp:TextBox><asp:RequiredFieldValidator ID="RequiredFieldValidatorName"
runat="server" ControlToValidate="txtTPName"
ErrorMessage="Enter Name" CssClass="validationtext"
ValidationGroup="VG_TP">*</asp:RequiredFieldValidator>
</span>
</div>
<div class="row">
<span class="rowlabel"> <asp:Label ID="Label4" runat="server" Text="Address Line 1"></asp:Label> </span>
<span class="rowtext"> <asp:TextBox ID="txtTPAddLine1" runat="server"
CssClass="textbox" MaxLength="50"></asp:TextBox> </span>
</div>
<div class="row">
<span class="rowlabel"> <asp:Label ID="Label5" runat="server" Text="Address Line 2"></asp:Label> </span>
<span class="rowtext"> <asp:TextBox ID="txtTPAddLine2" runat="server"
CssClass="textbox" MaxLength="50"></asp:TextBox> </span>
</div>
<div class="row">
<span class="rowlabel"> <asp:Label ID="Label7" runat="server" Text="Town/City"></asp:Label> </span>
<span class="rowtext"> <asp:TextBox ID="txtTPTownCity" runat="server"
CssClass="textbox" MaxLength="50"></asp:TextBox> </span>
</div>
<div class="row">
<span class="rowlabel"> <asp:Label ID="Label10" runat="server" Text="County"></asp:Label> </span>
<span class="rowtext"> <asp:TextBox ID="txtTPCounty" runat="server"
CssClass="textbox" MaxLength="50"></asp:TextBox> </span>
</div>
<div class="row">
<span class="rowlabel"> <asp:Label ID="Label11" runat="server" Text="Postcode"></asp:Label> </span>
<span class="rowtext">
<asp:TextBox ID="txtTPPostcode" runat="server"
CssClass="textbox" MaxLength="20" Height="27px"></asp:TextBox> </span>
</div>
<div class="row">
<span class="rowlabel"> <asp:Label ID="Label9" runat="server" Text="Country"></asp:Label> </span>
<span class="rowtext"> <asp:DropDownList ID="dropTPCountry" runat="server"
CssClass="combo" Width="263px" AppendDataBoundItems="True"
DataSourceID="SqlDataSourceCountries" DataTextField="Country"
DataValueField="Country">
<asp:ListItem Selected="True"></asp:ListItem>
</asp:DropDownList> </span>
</div>
<div class="row">
<span class="rowlabel"> <asp:Label ID="Label1" runat="server" Text="Phone No"></asp:Label> </span>
<span class="rowtext"> <asp:TextBox ID="txtTPPhoneNo" runat="server"
CssClass="textbox" MaxLength="30"></asp:TextBox> </span>
</div>
<div class="row">
<span class="rowlabel"> <asp:Label ID="Label2" runat="server" Text="Insurance Company"></asp:Label> </span>
<span class="rowtext"> <asp:TextBox ID="txtTPInsurer" runat="server" CssClass="textbox" MaxLength="30"></asp:TextBox> </span>
</div>
<div class="row">
<span class="rowlabel"> <asp:Label ID="Label3" runat="server" Text="Policy No"></asp:Label> </span>
<span class="rowtext"> <asp:TextBox ID="txtTPPolicyNo" runat="server" CssClass="textbox" MaxLength="30"></asp:TextBox> </span>
</div>
<div class="row">
<span class="rowlabel"> <asp:Label ID="Label6" runat="server" Text="Vehicle Registration No"></asp:Label> </span>
<span class="rowtext"> <asp:TextBox ID="txtRegNo" runat="server" CssClass="textbox" MaxLength="30"></asp:TextBox> </span>
</div>
<div class="row">
<span class="rowlabel"> <asp:Label ID="Label12" runat="server" Text="Vehicle Make"></asp:Label> </span>
<span class="rowtext"> <asp:TextBox ID="txtVehicleMake" runat="server" CssClass="textbox" MaxLength="50"></asp:TextBox> </span>
</div>
<div class="row">
<span class="rowlabel"> <asp:Label ID="Label13" runat="server" Text="Vehicle Model"></asp:Label> </span>
<span class="rowtext"> <asp:TextBox ID="txtVehicleModel" runat="server" CssClass="textbox" MaxLength="50"></asp:TextBox> </span>
</div>
<div class="row">
<asp:Button ID="cmdSaveTP" runat="server" Text="Save" CssClass="button"
ValidationGroup="VG_TP" onclick="cmdSaveTP_Click" />
</div>
<asp:ValidationSummary ID="ValidationSummary" runat="server" ValidationGroup="VG_TP" CssClass="validationtext" />
</div>
<br />
</asp:Panel>
<asp:CollapsiblePanelExtender ID="bottomPanel_CollapsiblePanelExtender"
runat="server" CollapseControlID="topPanel" Collapsed="True"
CollapsedImage="~/Images/expand.jpg" CollapsedText="Record Entry" Enabled="True"
ExpandControlID="topPanel" ExpandedImage="~/Images/collapse.jpg"
ExpandedText="Hide add third party" ImageControlID="imgToggle"
TargetControlID="bottomPanel" ExpandedSize="670">
</asp:CollapsiblePanelExtender>
</ContentTemplate>
</asp:UpdatePanel>
<div class="leftpanel">
<asp:UpdatePanel ID="up1" runat="server">
<ContentTemplate>
<div class="userControl">
<asp:PlaceHolder ID="ph1" runat="server"></asp:PlaceHolder>
</div>
</span>
</ContentTemplate>
</asp:UpdatePanel>
</div> <%–End of Left Panel –%>
<asp:SqlDataSource ID="SqlDataSourceCountries" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT [Country] FROM [Countries] ORDER BY [Country]"></asp:SqlDataSource>
<asp:RegularExpressionValidator ID="RegularExpressionValidatorPhone" runat="server"
ControlToValidate="txtTPPhoneNo" Display="None"
ErrorMessage="Phone No – Use numeric values without spaces" ValidationGroup="VG_TP"
ValidationExpression="d+"></asp:RegularExpressionValidator>
<asp:ObjectDataSource ID="ObjectDataSourceTPs" runat="server"
DataObjectTypeName="Project.A.BO.ThirdParty"
OldValuesParameterFormatString="original_{0}" SelectMethod="GetList"
TypeName="Project.A.Bll.ThirdPartyManager" UpdateMethod="Save">
<SelectParameters> <asp:QueryStringParameter DefaultValue="" Name="notificationID" QueryStringField="ID" Type="Int32" />
</SelectParameters>
</asp:ObjectDataSource>
</div> <%–End of Container–%>
<asp:Button ID="Button1" runat="server" Text="Button" />
</form>
</body>
</html>
****************** CODE EXTRACT: ThirdParties.aspx.cs **********************
This method is called from page_init()…
private void TPAddDynamicControls()
{
ThirdPartyList tpList = ThirdPartyManager.GetList(Convert.ToInt32(Request.QueryString["ID"]));
ViewState["SessionID"] = Request.QueryString["SessionID"];
currSession.Load((String)ViewState["SessionID"]);
if (tpList != null)
{
int numOfTPs = tpList.Count();
int ControlID = 0;
for (int i = 0; i <= numOfTPs – 1; i++)
{
ThirdPartyUserControl DynamicUserControl = LoadControl("ThirdPartyUserControl.ascx") as ThirdPartyUserControl;
DynamicUserControl.ID = "uc" + ControlID;
((TextBox)DynamicUserControl.FindControl("txtTPID")).Text = Convert.ToString(tpList.ElementAt(i).iD);
((DropDownList)DynamicUserControl.FindControl("dropTitle")).Text = tpList.ElementAt(i).title;
((TextBox)DynamicUserControl.FindControl("txtTPName")).Text = tpList.ElementAt(i).name;
//more controls added here…
ph1.Controls.Add(DynamicUserControl);
ControlID += 1;
}
}