Gridview更新自动舍入十进制值

时间:2013-08-11 15:54:27

标签: 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"));        
  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>

1 个答案:

答案 0 :(得分:1)

将文本框格式从Text='<%# Bind("Price", "{0:n2}") %>更改为Text='<%# Bind("Price", "{0:n}") %>

更新:看起来Sql server必须对自动舍入小数进行操作。Try changing datatype from decimal(18,2) to float in database. Here是一个讨论。 Here是另一个人。希望它有所帮助。