C# Asp.net Gridview CompareValidator

C# Asp.net Gridview CompareValidator,c#,asp.net,gridview,C#,Asp.net,Gridview,我有一个具有多行(记录)的GridView 它适用于一行,但是如果有多行,它将同时验证所有行 我理解这种情况的发生是因为ControlToValidate=“ddlacionstatus”对每一行重复 我试图设置ID,如ID=“ddlacionstatus”和ControlToValidate=“ddlacionstatus”,但它不起作用 我知道我可以编写自定义验证,但是有没有一个不需要自定义验证的简单解决方案 我需要的是每一行都是独立的 谢谢您的帮助。问题不在于ControlToVali

我有一个具有多行(记录)的GridView


它适用于一行,但是如果有多行,它将同时验证所有行

我理解这种情况的发生是因为
ControlToValidate=“ddlacionstatus”
对每一行重复

我试图设置ID,如
ID=“ddlacionstatus”
ControlToValidate=“ddlacionstatus”
,但它不起作用

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

我需要的是每一行都是独立的


谢谢您的帮助。

问题不在于
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
不同

祝你一切顺利

<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" />