C# Gridview更新自动舍入十进制值
更新gridview行时,十进制值会自动舍入。假设编辑文本框中的价格值为1.25,则它变为1等。sql表中的数据类型为数字(18,2)。请帮我解决这个问题C# Gridview更新自动舍入十进制值,c#,asp.net,sql,C#,Asp.net,Sql,更新gridview行时,十进制值会自动舍入。假设编辑文本框中的价格值为1.25,则它变为1等。sql表中的数据类型为数字(18,2)。请帮我解决这个问题 enter code here protected void RowUpdating(object sender, GridViewUpdateEventArgs e) { TextBox MPrice = ((TextBox)GridView3.Rows[e.RowIndex].FindControl("txtPrice"));
enter code here
protected void RowUpdating(object sender, GridViewUpdateEventArgs e)
{
TextBox MPrice = ((TextBox)GridView3.Rows[e.RowIndex].FindControl("txtPrice"));
cmd.Parameters.Add("@Price", SqlDbType.Decimal).Value = decimal.Parse(MPrice.Text);
cmd.ExecuteNonQuery();
}
aspx:
<EditItemTemplate>
<asp:TextBox ID="txtPrice" runat="server" Text='<%# Bind("Price", "{0:n2}") %>'> </asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="txtPrice" ErrorMessage="*"></asp:RequiredFieldValidator>
<asp:RangeValidator ID="RangeValidator1" runat="server" ControlToValidate="txtPrice" ErrorMessage="*" MaximumValue="99999" MinimumValue=".01" Type="Double"></asp:RangeValidator>
</EditItemTemplate>
将文本框格式从
Text='
更改为Text='
更新:看来Sql server必须对小数进行自动舍入。
尝试将数据库中的数据类型从十进制(18,2)更改为浮动。
这是一个讨论这是另一个。希望有帮助。将文本框格式从Text='
更改为Text='
更新:看来Sql server必须对小数进行自动舍入。
尝试将数据库中的数据类型从十进制(18,2)更改为浮动。
这是一个讨论这是另一个。希望有帮助。您是否尝试过调试?调试给出了字段中输入的正确值您是否尝试过调试?调试给出了字段中输入的正确值即使删除了格式,结果也是一样的。如果表中的值为0.25(eg),它将正确显示在gridview中,但会自动更新舍入。在cmd.ExecuteNonQuery()处设置断点
并查看decimal.Parse(MPrice.Text)
的值,它在文本框中尝试了2.25,在断点处获得了相同的值,但在表中保存为2.0。我尝试了float、numeric和money,但结果相同。我在另一个表中使用了数字(18,2),并在另一个页面中从另一个gridview进行了更新,数据类型没有任何问题。即使删除了格式,结果也是一样的。如果表中的值为0.25(eg),它将正确显示在gridview中,但会自动更新舍入。在cmd.ExecuteNonQuery()处设置断点
并查看decimal.Parse(MPrice.Text)
的值,它在文本框中尝试了2.25,在断点处获得了相同的值,但在表中保存为2.0。我尝试了float、numeric和money,但结果相同。我在另一个表中使用了numeric(18,2),并在另一个页面中从另一个gridview进行了更新,数据类型没有任何问题。