1

我有一个带有 DropwDownlist 控件的 asp.net GridView 和一堆用于文本输入等的其他文本框。用户可以向网格添加多行并更改现有数据等。

我需要RequiredFieldValidator 只为正在访问的当前行触发。我已将 InitialValue 设置为正确的值,并让验证器触发,我遇到的问题是它会触发每一行,而不仅仅是当前正在处理的行。

有任何想法吗?

我在 GridView 的 DropDown 下的验证器:

<asp:RequiredFieldValidator ID="rfRoles" runat="server" ErrorMessage="Role Required"
     ControlToValidate="ddlRole" ValidationGroup=roles InitialValue="-1" Display="Dynamic" SetFocusOnError="true" Text="*">
</asp:RequiredFieldValidator>
<asp:ValidationSummary ID="validateRole" runat="server" ShowMessageBox="True" ShowSummary="false" ValidationGroup="roles" />

我在网格中的保存按钮:

<EditItemTemplate>
<asp:LinkButton ID="lnkSave" runat="server" Text="Save" CommandName="Update" CausesValidation="true" ForeColor="#AE0917" ValidationGroup="roles" Font-Bold="true"></asp:LinkButton></EditItemTemplate>
4

1 回答 1

2

我相信你可以做这样的事情:

<EditItemTemplate>
<asp:RequiredFieldValidator ID="rfRoles" runat="server" ErrorMessage="Role Required"
    ControlToValidate="ddlRole" ValidationGroup="roles<%# Eval("Id") %>" InitialValue="-1" Display="Dynamic" SetFocusOnError="true" Text="*">
</asp:RequiredFieldValidator>
<asp:ValidationSummary ID="validateRole" runat="server" ShowMessageBox="True" ShowSummary="false" ValidationGroup="roles<%# Eval("Id") %>" />

<asp:LinkButton ID="lnkSave" runat="server" Text="Save" CommandName="Update" CausesValidation="true" ForeColor="#AE0917"ValidationGroup="roles<%# Eval("Id") %>" Font-Bold="true"></asp:LinkButton>
</EditItemTemplate>

其中“Id”是您的数据行的标识符,例如您正在编辑的数据行的主键。这样,您就可以为每一行提供一个唯一的验证组。

PS语法可能需要一些工作,我是从记忆中完成的。

于 2012-04-23T16:21:45.480 回答