【问题标题】:Asp.net Gridview CompareValidatorAsp.net Gridview CompareValidator
【发布时间】:2014-08-31 22:43:40
【问题描述】:

我有一个包含多行(记录)的 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&lt;%# Eval('ReportActionStatusID') %&gt;"ControlToValidate="DDLActionStatus&lt;%# Eval('ReportActionStatusID') %&gt;",但它不起作用。

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

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

感谢您的帮助。

【问题讨论】:

    标签: c# asp.net gridview


    【解决方案1】:

    问题不在于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 每行都不同。

    一切顺利!

    【讨论】:

      猜你喜欢
      • 2010-09-21
      • 1970-01-01
      • 2011-03-11
      • 1970-01-01
      • 2010-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多