Asp.net Gridview CompareValidator

时间:2014-08-31 22:43:40

标签: c# asp.net gridview

我有一个包含多行(记录)的GridView。

<asp:DropDownList ID="DDLActionStatus" runat="server" DataSourceID="LDSActionStatus" AppendDataBoundItems="True" DataTextField="Title" DataValueField="ReportActionStatusID" SelectedValue='<%# Bind("ReportActionStatusID") %>' Enabled='<%# (int)Eval("ReportActionStatusID") == 1 %>' Width="100%" />

<asp:Button ID="BtnActionStatus" runat="server" CommandName="Update" Text="Save & Close" OnClientClick="return confirm('Are you sure?  Once set, this can not be changed.')" Width="100%" />

<asp:CompareValidator ID="CVActionStatus" runat="server" Operator="NotEqual" ValueToCompare="1" Type="Integer" ControlToValidate="DDLActionStatus" SetFocusOnError="true" ErrorMessage="Must set one of the Completion statuses" />

它适用于一行,但是如果有多行,它会一起验证所有行。

我理解这是因为ControlToValidate="DDLActionStatus"每行重复一次。

我尝试将ID设置为ID="DDLActionStatus<%# Eval('ReportActionStatusID') %>"ControlToValidate="DDLActionStatus<%# Eval('ReportActionStatusID') %>",但它不起作用。

我知道我可以编写自定义验证,但有一个简单的解决方案,不需要自定义验证吗?

我需要的是每一行都是独立验证的。

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

问题不在于ControlToValidate属性。向具有相同值的行中的每个控件添加ValidationGroup属性。但是,请确保为GridView中的所有行保持唯一。请参阅以下示例。

<asp:DropDownList ID="DDLActionStatus" runat="server" ValidationGroup="MyGroup1" DataSourceID="LDSActionStatus" AppendDataBoundItems="True" DataTextField="Title" DataValueField="ReportActionStatusID" SelectedValue='<%# Bind("ReportActionStatusID") %>' Enabled='<%# (int)Eval("ReportActionStatusID") == 1 %>' Width="100%" />

<asp:Button ID="BtnActionStatus" runat="server" ValidationGroup="MyGroup1" CommandName="Update" Text="Save & Close" OnClientClick="return confirm('Are you sure?  Once set, this can not be changed.')" Width="100%" />

<asp:CompareValidator ID="CVActionStatus" runat="server" ValidationGroup="MyGroup1" Operator="NotEqual" ValueToCompare="1" Type="Integer" ControlToValidate="DDLActionStatus" SetFocusOnError="true" ErrorMessage="Must set one of the Completion statuses" />

确保每行的ValidationGroup不同。

一切顺利!