DataGrid中的Validator,使用行中的参数

时间:2015-02-12 16:22:41

标签: c# asp.net datagrid

我有一种情况,在数据库中,我有项目列表,其中包含这样的信息:

[Item]
* ItemName
* ItemPackagingSize
* AvailableQuantity

用户可以输入他想要获得的物品数量(数量),但该数量必须符合以下条件:

if(quantity % ItemPackagingSize == 0)
    isValid = true;
else
    isValid = false;

我应该使用什么ASP.NET验证器来检查这个东西?或者也许有其他方法,这样做?

例如,对于AvailableQuantity,我使用:

<asp:RangeValidator ID="RangeValidator" ControlToValidate="OrderQuantity" runat="server" Type="Double" MaximumValue='<%# Container.DataItem["LeftQuantity"] %>' ErrorMessage="Quantity entered is higher than available quantity"></asp:RangeValidator>

1 个答案:

答案 0 :(得分:0)

范围验证器仅检查介于两个参数之间的输入 - 低和高。

您的要求似乎是确保客户只购买完整的包装 - 您可以购买六包装,但不能购买单瓶装。

您可以创建一个访问您编写的代码的自定义验证器 - 这可以正常工作,但涉及服务器端验证。这是一个例子:http://asp.net-tutorials.com/validation/custom-validator/

另一个选项是RegularExpression(RegEx)验证器 - 使用客户端验证。 RegEx可以使用模数(%)运算符来测试您的状况。但是,您必须为每个“ItemPackagingSize”动态创建一个单独的RegEx验证器,该验证器因不同的产品而异。

最后,另一种选择可能是重新定义数量对用户的意义:数量为1意味着1个六包。