允许在datagridview单元格中使用货币值的验证,例如c#中的12.50

时间:2012-12-10 07:03:06

标签: c# datagridview

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

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分: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

答案 2 :(得分:0)

由于您似乎想要实时验证用户输入,我认为最好和有效的方法是创建托管MaskedtextBox的自定义列类型。 This文章说明了如何做到这一点。你可以在那里指定一种格式。有关掩码元素的信息,请参阅this MSDN帖子。