Asp.net OnRowUpdating Gridview输入字符串的格式不正确
我一辈子都搞不懂这个。。。我有一个附加了sqldatasource的gridview,我在editItemtemplate中格式化了费用金额,如下所示。当通过单击update lnk按钮引发OnRowUpdate事件时,我收到此错误。还请注意,我在文本框中用“$”之类的“$200.00”来设置数字格式 我很确定问题出在费用上,但我可能错了Asp.net OnRowUpdating Gridview输入字符串的格式不正确,asp.net,gridview,Asp.net,Gridview,我一辈子都搞不懂这个。。。我有一个附加了sqldatasource的gridview,我在editItemtemplate中格式化了费用金额,如下所示。当通过单击update lnk按钮引发OnRowUpdate事件时,我收到此错误。还请注意,我在文本框中用“$”之类的“$200.00”来设置数字格式 我很确定问题出在费用上,但我可能错了 An unhandled exception was generated during the execution of the current web re
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: Input string was not in a correct format.]
System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) +9592843
System.Number.ParseDecimal(String value, NumberStyles options, NumberFormatInfo numfmt) +146
System.Convert.ToDecimal(String value, IFormatProvider provider) +67
System.String.System.IConvertible.ToDecimal(IFormatProvider provider) +10
System.Convert.ChangeType(Object value, TypeCode typeCode, IFormatProvider provider) +491
System.Web.UI.WebControls.Parameter.GetValue(Object value, String defaultValue, TypeCode type, Boolean convertEmptyStringToNull, Boolean ignoreNullableTypeChanges) +126
System.Web.UI.WebControls.Parameter.GetValue(Object value, Boolean ignoreNullableTypeChanges) +63
System.Web.UI.WebControls.SqlDataSourceView.AddParameters(DbCommand command, ParameterCollection reference, IDictionary parameters, IDictionary exclusionList, String oldValuesParameterFormatString) +550
System.Web.UI.WebControls.SqlDataSourceView.ExecuteUpdate(IDictionary keys, IDictionary values, IDictionary oldValues) +346
System.Web.UI.DataSourceView.Update(IDictionary keys, IDictionary values, IDictionary oldValues, DataSourceViewOperationCallback callback) +95
System.Web.UI.WebControls.GridView.HandleUpdate(GridViewRow row, Int32 rowIndex, Boolean causesValidation) +1226
System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) +855
System.Web.UI.WebControls.GridView.OnBubbleEvent(Object source, EventArgs e) +95
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +37
System.Web.UI.WebControls.GridViewRow.OnBubbleEvent(Object source, EventArgs e) +121
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +37
System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e) +125
System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) +169
System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +9
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +176
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5563
Protected Sub OnRowUpdating(ByVal sender As Object, ByVal e As GridViewUpdateEventArgs) Handles GridViewDegfaultCharges.RowUpdating
'OnRowUpdating Sets Update Params for the GridView
Dim TextBox2 As TextBox 'category
Dim TextBox3 As TextBox 'fee_name
Dim TextBox4 As TextBox 'fee_amt
Dim CheckBox1 As CheckBox 'inactive
Dim blnValid As Boolean
lblMessage.Text = ""
blnValid = True
TextBox2 = GridViewDegfaultCharges.Rows(e.RowIndex).FindControl("TextBox2")
TextBox3 = GridViewDegfaultCharges.Rows(e.RowIndex).FindControl("TextBox3")
TextBox4 = GridViewDegfaultCharges.Rows(e.RowIndex).FindControl("TextBox4")
CheckBox1 = GridViewDegfaultCharges.Rows(e.RowIndex).FindControl("CheckBox1")
If CheckDefaultChargesCategory(TextBox2.Text) Then
lblMessage.Text = TextBox2.Text & " is not a valid Loan Type"
blnValid = False
e.Cancel = True
Exit Sub
End If
SqlDataDefaultCharges.UpdateParameters("category").DefaultValue = TextBox2.Text
SqlDataDefaultCharges.UpdateParameters("fee_name").DefaultValue = TextBox3.Text
SqlDataDefaultCharges.UpdateParameters("fee_amt").DefaultValue = Convert.ToDecimal(TextBox4.Text).ToString()
SqlDataDefaultCharges.UpdateParameters("investorID").DefaultValue = Convert.ToInt32(_pageID)
SqlDataDefaultCharges.UpdateParameters("inactive").DefaultValue = CheckBox1.Checked
If blnValid Then
SqlDataDefaultCharges.Update()
End If
End Sub
我可能错了,我不知道你是如何处理这个值的,但是,“费用金额”被转换成十进制,然后再转换回字符串 之前:
SqlDataDefaultCharges.UpdateParameters(“费用金额”).DefaultValue=Convert.ToDecimal(TextBox4.Text).ToString()
之后:
SqlDataDefaultCharges.UpdateParameters(“费用金额”).DefaultValue=Convert.ToDecimal(TextBox4.Text)
编辑:
当然,除非该值应该是字符串
,在这种情况下,使用TextBox4.Text就足够了
如果在文本框中添加了美元符号,则基于codingbiz的注释。Convert.ToDecimal()
不起作用,因为“$”不是数值。我假设您在文本框旁边显示“$”
我在添加“.ToString()”之前尝试过单独转换.ToDecimal(TextBox4.Text),以查看是否还会发生任何其他情况,但我得到了相同的错误。尝试删除$signal似乎仍然不起作用。。。实际aspx文件上的参数字段值类型为十进制。不确定这是否有帮助。这意味着不知何故200不是要保存的值。它是“$200”或空字符串(null),不能转换为数字