Please help,
I am having trouble getting a running total of a specific column in the datagrid. I get an error indicating the input string was not in a correct format (see below). I'm not sure what I have to do. I tried stepping through the code with the debugger to isolate the problem, but I'm still not sure what is going on.
-----------------------------
ERROR MESSAGE
-----------------------------
Input string was not in a correct format.
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: Input string was not in a correct format.
Source Error:
Line 78: If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
Line 79: CalcTotal(e.Item.Cells(11).Text)
Line 80: e.Item.Cells(11).Text = String.Format("{0:c}", Convert.ToDouble(e.Item.Cells(11).Text))
Line 81: ElseIf (e.Item.ItemType = ListItemType.Footer) Then
Line 82: e.Item.Cells(10).Text = "Total"
-----------------------------
STACK TRACE
-----------------------------
Input string was not in a correct format.
at System.Number.ParseDouble(String s, NumberStyles style, NumberFormatInfo info)
at System.Double.Parse(String s, NumberStyles style, IFormatProvider provider)
at System.Convert.ToDouble(String value)
at NewLeafTech.AccountsReceivable.dgAR_ItemDataBound(Object sender, DataGridItemEventArgs e) in c:\inetpub\ 80
at System.Web.UI.WebControls.DataGrid.OnItemDataBound(DataGridItemEventArgs e)
at System.Web.UI.WebControls.DataGrid.CreateItem(Int32 itemIndex, Int32 dataSourceIndex, ListItemType itemType, Boolean dataBind, Object dataItem, DataGridColumn[] columns, TableRowCollection rows, PagedDataSource pagedDataSource)
at System.Web.UI.WebControls.DataGrid.CreateControlHierarchy(Boolean useDataSource)
at System.Web.UI.WebControls.BaseDataList.OnDataBinding(EventArgs e)
at System.Web.UI.WebControls.BaseDataList.DataBind()
at System.Web.UI.Control.DataBind()
at System.Web.UI.Control.DataBind()
at NewLeafTech.AccountsReceivable.GetData() in c:\inetpub\ 63
at NewLeafTech.AccountsReceivable.Page_Load(Object sender, EventArgs e) in c:\inetpub\ 42
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain()
-----------------------------
CODE BEHIND FILE
-----------------------------
Imports NewLeafTech
Public Class AccountsReceivable
Inherits System.Web.UI.Page
Protected WithEvents dgAR As System.Web.UI.WebControls.DataGrid
Protected WithEvents btSubmit As System.Web.UI.WebControls.Button
Private runningTotal As Double = 0
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If IsPostBack = False Then
GetData()
End If
End Sub
Sub GetData()
Dim o_AR As New NewLeafTech.AccountsReceivable()
With dgAR
.DataSource = o_AR.GetAccountReceivableAll
End With
Dim o_Stats As New NewLeafTech.EarningStats()
With dgProjStats
.DataSource = o_Stats.GetProjectStats
End With
With dgStatTotals
.DataSource = o_Stats.GetStatTotals
End With
DataBind()
End Sub
Private Sub CalcTotal(ByVal _paycheck As String)
Try
runningTotal += Double.Parse(_paycheck)
Catch
' A value was null
End Try
End Sub
Public Sub dgAR_ItemDataBound(ByVal sender As Object, ByVal e As DataGridItemEventArgs)
If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
CalcTotal(e.Item.Cells(11).Text)
e.Item.Cells(11).Text = String.Format("{0:c}", Convert.ToDouble(e.Item.Cells(11).Text))
ElseIf (e.Item.ItemType = ListItemType.Footer) Then
e.Item.Cells(10).Text = "Total"
e.Item.Cells(11).Text = String.Format("{0:c}", runningTotal)
End If
End Sub
Other routines removed to save on space.
End Class
-----------------------------
ASPX FILE
-----------------------------
<asp:datagrid
id="Datagrid1"
runat="server"
OnEditCommand="EditAccountsReceivable"
OnCancelCommand="CancelAccountsReceivable"
OnUpdateCommand="UpdateAccountsReceivable"
OnDeleteCommand="DeleteAccountsReceivable"
DataKeyField="ID"
OnItemDataBound="dgAR_ItemDataBound"
AutoGenerateColumns="False"
ShowFooter="True"
Width="100%"
BorderColor="#CCCCCC"
BorderStyle="None"
BorderWidth="1px"
BackColor="White"
CellPadding="3">
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#669999"></SelectedItemStyle>
<AlternatingItemStyle BackColor="#EDE9E0"></AlternatingItemStyle>
<ItemStyle ForeColor="#000066" Font-Name="verdana" Font-Size="12px"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="White" BackColor="#006699" Font-Name="verdana" Font-Size="12px"></HeaderStyle>
<FooterStyle ForeColor="#000066" BackColor="White"></FooterStyle>
<Columns>
<asp:BoundColumn Visible="False" DataField="ID" ReadOnly="True"></asp:BoundColumn>
<asp:TemplateColumn>
<HeaderTemplate>
Week Of Date
</HeaderTemplate>
<ItemTemplate>
<%# Container.DataItem("WeekOfDate" %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Width="70" ID="Textbox1" Text='<%# Container.DataItem( "WeekOfDate" %>' runat="server"/>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
Client Name
</HeaderTemplate>
<ItemTemplate>
<%# Container.DataItem( "ClientName" %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Width="100" ID="Textbox2" Runat="server"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
Project Name
</HeaderTemplate>
<ItemTemplate>
<%# Container.DataItem( "ProjectName" %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Width="100" ID="Textbox3" Runat="server"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
Company Name
</HeaderTemplate>
<ItemTemplate>
<%# Container.DataItem( "CompanyName" %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Width="100" ID="Textbox4" Runat="server"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
Billable Hours
</HeaderTemplate>
<ItemTemplate>
<%# Container.DataItem( "BillableHours" %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Width="30" ID="Textbox5" Text='<%# Container.DataItem("BillableHours" %>' runat="server"/>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
Extra Hours
</HeaderTemplate>
<ItemTemplate>
<%# Container.DataItem( "ExtraHours" %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Width="30" ID="Textbox6" Text='<%# Container.DataItem("ExtraHours" %>' runat="server"/>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
Hourly Rate
</HeaderTemplate>
<ItemTemplate>
<%# Container.DataItem( "HourlyRate" %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Width="50" ID="Textbox7" Text='<%# Container.DataItem("HourlyRate" %>' runat="server"/>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
Tax Type
</HeaderTemplate>
<ItemTemplate>
<%# Container.DataItem( "TaxType" %>
</ItemTemplate>
<EditItemTemplate>
<aspropDownList width="100" id="Dropdownlist1" runat="server">
<asp:ListItem Value="W-2" Selected="True">W-2</asp:ListItem>
<asp:ListItem Value="1099">1099</asp:ListItem>
<asp:ListItem Value="None">None</asp:ListItem>
</aspropDownList>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
Check Number
</HeaderTemplate>
<ItemTemplate>
<%# Container.DataItem( "CheckNumber" %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Width="70" ID="Textbox8" Text='<%# Container.DataItem("CheckNumber" %>' runat="server"/>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
Reference Number
</HeaderTemplate>
<ItemTemplate>
<%# Container.DataItem( "ReferenceNumber" %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Width="70" ID="Textbox9" Text='<%# Container.DataItem("ReferenceNumber" %>' runat="server"/>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
Paycheck Amount
</HeaderTemplate>
<ItemTemplate>
<%# Container.DataItem( "PaycheckAmount" %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Width="50" ID="Textbox10" Text='<%# Container.DataItem("PaycheckAmount" %>' runat="server"/>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
Payment Date
</HeaderTemplate>
<ItemTemplate>
<%# Container.DataItem( "PaymentDate" %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Width="70" ID="Textbox11" Text='<%# Container.DataItem("PaymentDate" %>' runat="server"/>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
Comments
</HeaderTemplate>
<ItemTemplate>
<%# Container.DataItem( "Comments" %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Width="125" ID="Textbox12" Text='<%# Container.DataItem("Comments" %>' runat="server"/>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="Update" CancelText="Cancel" EditText="Edit">
<ItemStyle Width="70px"></ItemStyle>
</asp:EditCommandColumn>
<asp:ButtonColumn Text="Delete" CommandName="Delete">
<ItemStyle Width="50px"></ItemStyle>
</asp:ButtonColumn>
</Columns>
</asp:datagrid> regards,
Brian
I am having trouble getting a running total of a specific column in the datagrid. I get an error indicating the input string was not in a correct format (see below). I'm not sure what I have to do. I tried stepping through the code with the debugger to isolate the problem, but I'm still not sure what is going on.
-----------------------------
ERROR MESSAGE
-----------------------------
Input string was not in a correct format.
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: Input string was not in a correct format.
Source Error:
Line 78: If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
Line 79: CalcTotal(e.Item.Cells(11).Text)
Line 80: e.Item.Cells(11).Text = String.Format("{0:c}", Convert.ToDouble(e.Item.Cells(11).Text))
Line 81: ElseIf (e.Item.ItemType = ListItemType.Footer) Then
Line 82: e.Item.Cells(10).Text = "Total"
-----------------------------
STACK TRACE
-----------------------------
Input string was not in a correct format.
at System.Number.ParseDouble(String s, NumberStyles style, NumberFormatInfo info)
at System.Double.Parse(String s, NumberStyles style, IFormatProvider provider)
at System.Convert.ToDouble(String value)
at NewLeafTech.AccountsReceivable.dgAR_ItemDataBound(Object sender, DataGridItemEventArgs e) in c:\inetpub\ 80
at System.Web.UI.WebControls.DataGrid.OnItemDataBound(DataGridItemEventArgs e)
at System.Web.UI.WebControls.DataGrid.CreateItem(Int32 itemIndex, Int32 dataSourceIndex, ListItemType itemType, Boolean dataBind, Object dataItem, DataGridColumn[] columns, TableRowCollection rows, PagedDataSource pagedDataSource)
at System.Web.UI.WebControls.DataGrid.CreateControlHierarchy(Boolean useDataSource)
at System.Web.UI.WebControls.BaseDataList.OnDataBinding(EventArgs e)
at System.Web.UI.WebControls.BaseDataList.DataBind()
at System.Web.UI.Control.DataBind()
at System.Web.UI.Control.DataBind()
at NewLeafTech.AccountsReceivable.GetData() in c:\inetpub\ 63
at NewLeafTech.AccountsReceivable.Page_Load(Object sender, EventArgs e) in c:\inetpub\ 42
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain()
-----------------------------
CODE BEHIND FILE
-----------------------------
Imports NewLeafTech
Public Class AccountsReceivable
Inherits System.Web.UI.Page
Protected WithEvents dgAR As System.Web.UI.WebControls.DataGrid
Protected WithEvents btSubmit As System.Web.UI.WebControls.Button
Private runningTotal As Double = 0
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If IsPostBack = False Then
GetData()
End If
End Sub
Sub GetData()
Dim o_AR As New NewLeafTech.AccountsReceivable()
With dgAR
.DataSource = o_AR.GetAccountReceivableAll
End With
Dim o_Stats As New NewLeafTech.EarningStats()
With dgProjStats
.DataSource = o_Stats.GetProjectStats
End With
With dgStatTotals
.DataSource = o_Stats.GetStatTotals
End With
DataBind()
End Sub
Private Sub CalcTotal(ByVal _paycheck As String)
Try
runningTotal += Double.Parse(_paycheck)
Catch
' A value was null
End Try
End Sub
Public Sub dgAR_ItemDataBound(ByVal sender As Object, ByVal e As DataGridItemEventArgs)
If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
CalcTotal(e.Item.Cells(11).Text)
e.Item.Cells(11).Text = String.Format("{0:c}", Convert.ToDouble(e.Item.Cells(11).Text))
ElseIf (e.Item.ItemType = ListItemType.Footer) Then
e.Item.Cells(10).Text = "Total"
e.Item.Cells(11).Text = String.Format("{0:c}", runningTotal)
End If
End Sub
Other routines removed to save on space.
End Class
-----------------------------
ASPX FILE
-----------------------------
<asp:datagrid
id="Datagrid1"
runat="server"
OnEditCommand="EditAccountsReceivable"
OnCancelCommand="CancelAccountsReceivable"
OnUpdateCommand="UpdateAccountsReceivable"
OnDeleteCommand="DeleteAccountsReceivable"
DataKeyField="ID"
OnItemDataBound="dgAR_ItemDataBound"
AutoGenerateColumns="False"
ShowFooter="True"
Width="100%"
BorderColor="#CCCCCC"
BorderStyle="None"
BorderWidth="1px"
BackColor="White"
CellPadding="3">
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#669999"></SelectedItemStyle>
<AlternatingItemStyle BackColor="#EDE9E0"></AlternatingItemStyle>
<ItemStyle ForeColor="#000066" Font-Name="verdana" Font-Size="12px"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="White" BackColor="#006699" Font-Name="verdana" Font-Size="12px"></HeaderStyle>
<FooterStyle ForeColor="#000066" BackColor="White"></FooterStyle>
<Columns>
<asp:BoundColumn Visible="False" DataField="ID" ReadOnly="True"></asp:BoundColumn>
<asp:TemplateColumn>
<HeaderTemplate>
Week Of Date
</HeaderTemplate>
<ItemTemplate>
<%# Container.DataItem("WeekOfDate" %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Width="70" ID="Textbox1" Text='<%# Container.DataItem( "WeekOfDate" %>' runat="server"/>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
Client Name
</HeaderTemplate>
<ItemTemplate>
<%# Container.DataItem( "ClientName" %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Width="100" ID="Textbox2" Runat="server"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
Project Name
</HeaderTemplate>
<ItemTemplate>
<%# Container.DataItem( "ProjectName" %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Width="100" ID="Textbox3" Runat="server"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
Company Name
</HeaderTemplate>
<ItemTemplate>
<%# Container.DataItem( "CompanyName" %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Width="100" ID="Textbox4" Runat="server"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
Billable Hours
</HeaderTemplate>
<ItemTemplate>
<%# Container.DataItem( "BillableHours" %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Width="30" ID="Textbox5" Text='<%# Container.DataItem("BillableHours" %>' runat="server"/>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
Extra Hours
</HeaderTemplate>
<ItemTemplate>
<%# Container.DataItem( "ExtraHours" %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Width="30" ID="Textbox6" Text='<%# Container.DataItem("ExtraHours" %>' runat="server"/>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
Hourly Rate
</HeaderTemplate>
<ItemTemplate>
<%# Container.DataItem( "HourlyRate" %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Width="50" ID="Textbox7" Text='<%# Container.DataItem("HourlyRate" %>' runat="server"/>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
Tax Type
</HeaderTemplate>
<ItemTemplate>
<%# Container.DataItem( "TaxType" %>
</ItemTemplate>
<EditItemTemplate>
<aspropDownList width="100" id="Dropdownlist1" runat="server">
<asp:ListItem Value="W-2" Selected="True">W-2</asp:ListItem>
<asp:ListItem Value="1099">1099</asp:ListItem>
<asp:ListItem Value="None">None</asp:ListItem>
</aspropDownList>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
Check Number
</HeaderTemplate>
<ItemTemplate>
<%# Container.DataItem( "CheckNumber" %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Width="70" ID="Textbox8" Text='<%# Container.DataItem("CheckNumber" %>' runat="server"/>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
Reference Number
</HeaderTemplate>
<ItemTemplate>
<%# Container.DataItem( "ReferenceNumber" %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Width="70" ID="Textbox9" Text='<%# Container.DataItem("ReferenceNumber" %>' runat="server"/>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
Paycheck Amount
</HeaderTemplate>
<ItemTemplate>
<%# Container.DataItem( "PaycheckAmount" %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Width="50" ID="Textbox10" Text='<%# Container.DataItem("PaycheckAmount" %>' runat="server"/>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
Payment Date
</HeaderTemplate>
<ItemTemplate>
<%# Container.DataItem( "PaymentDate" %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Width="70" ID="Textbox11" Text='<%# Container.DataItem("PaymentDate" %>' runat="server"/>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
Comments
</HeaderTemplate>
<ItemTemplate>
<%# Container.DataItem( "Comments" %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Width="125" ID="Textbox12" Text='<%# Container.DataItem("Comments" %>' runat="server"/>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="Update" CancelText="Cancel" EditText="Edit">
<ItemStyle Width="70px"></ItemStyle>
</asp:EditCommandColumn>
<asp:ButtonColumn Text="Delete" CommandName="Delete">
<ItemStyle Width="50px"></ItemStyle>
</asp:ButtonColumn>
</Columns>
</asp:datagrid> regards,
Brian