0

我正在使用 datagridview 控件。我想验证 dataGridView 以允许 datagridview 文本框单元格中的货币格式值,如123.00,123.50. 那应该取数值和一个 . 价值。

4

3 回答 3

0

由于您似乎想要实时验证用户输入,我认为最好和最有效的方法是创建一个自定义列类型来托管MaskedtextBox. 本文展示了如何做到这一点。您可以在那里指定格式。请参阅MSDN 帖子以了解有关遮罩元素的信息。

于 2012-12-10T10:37:44.533 回答
0

我过去使用的方法(也是我知道如何做的唯一方法)是创建从 DataGridViewTextBoxColumn 和 DataGridViewTextBoxCell 继承的类,并在创建网格时使用派生类而不是 DataGridViewTextBoxColumn 作为 ColumnType。

链接有一个如何在 VB 中执行此操作的示例。我无法发布我的 C# 代码,因为它是由我曾经工作过的公司开发的,但 VB 代码基本相同。

于 2012-12-10T07:47:10.093 回答
0

你需要

1. There should be a decimal.
2. Only 2 digits after decimal
3. And there should be 2 such numbers separated by a comma(,)

这是代码:- aspx 文件

<asp:TextBox ID="txtMoney" runat="server" Width="100px" />
<asp:RequiredFieldValidator ID="rfvMoney" ValidationGroup="Insert" runat="server"
ControlToValidate="txtEmail" ErrorMessage="Please Enter value for money" ToolTip="Please Enter valid value for money"
SetFocusOnError="true" ForeColor="Red">*</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="reMoney" runat="server" ControlToValidate="txtMoney"
ErrorMessage="Please Enter a Valid value for Money" ToolTip="Please Enter a Valid Value for money"
SetFocusOnError="true" ForeColor="Red" ValidationExpression="\d+([.])\d\d([,])\d+([.])\d\d"
                            ValidationGroup="Insert">*</asp:RegularExpressionValidator>

即 aspx.cs 文件后面的代码

if (e.CommandName.Equals("Insert"))
        {
            eInfo.money = ((TextBox)gvEG.FindControl("txtMoney")).Text;
            new mainSQL().insertEmployeeInfo(eInfo); //My cs file for insert values to table
            FillEmployeeGrid();
        }

我已经在我的项目中尝试过这段代码,它工作正常。

这里的主要代码是正则表达式:

ValidationExpression="\d+([.])\d\d([,])\d+([.])\d\d"

在哪里

\d- denotes 1 digit
\d+ - one or many digits
\d\d - denotes only 2 digits
于 2012-12-10T08:56:13.733 回答