1

当我更新 gridview 行时,十进制值会自动四舍五入。假设编辑文本框中的价格值为 1.25,则变为 1 等。sql 表中的数据类型为 numeric(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>
4

1 回答 1

1

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

更新:看起来 Sql 服务器必须对小数自动舍入做一些事情。Try changing datatype from decimal(18,2) to float in database. 是一个讨论。是另一个。希望能帮助到你。

于 2013-08-11T16:22:23.603 回答