GridView中的DropDownList RequiredFieldValidator

时间:2012-04-23 16:12:42

标签: asp.net gridview drop-down-menu requiredfieldvalidator

我有一个带有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>

1 个答案:

答案 0 :(得分: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”是数据行的标识符,例如您正在编辑的数据行的主键。这样,您为每一行提供一个唯一的验证组。

P.S。语法可能需要一些工作,我是从内存中完成的。