1

DropwDownlistコントロールとテキスト入力などのための他のテキストボックスの束を備えたasp.netGridViewがあります。ユーザーはグリッドに複数の行を追加したり、既存のデータなどを変更したりできます。

アクセスされている現在の行に対してのみ起動する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 に答える