Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Gridview更新自动舍入十进制值_C#_Asp.net_Sql - Fatal编程技术网

C# Gridview更新自动舍入十进制值

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"));

更新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>

将文本框格式从
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进行了更新,数据类型没有任何问题。