RowCommandイベントのGridView内にあり問題があるRequiredFieldValidatorコントロールにアクセスしようとしています。あなたが見ることができるように、EditTemplateとFooterTemplateのためのRFVがありますASP.NET - RowCommandイベントで制御を取得します。
<asp:TemplateField HeaderText="Password">
<ItemTemplate>
<asp:TextBox ID="txtPassword" runat="server" CssClass="GridViewTextbox" TextMode="Password" Text='<%#Eval("WebPassword") %>' Enabled="false"></asp:TextBox>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtWebPassword" runat="server" TextMode="Password" Text='<%#Eval("WebPassword") %>'></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvPassword" runat="server" SetFocusOnError="true"
ControlToValidate="txtWebPassword" Display="None" ErrorMessage='<%# Constants.Strings.PasswordRequired %>'></asp:RequiredFieldValidator>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtAddWebPassword" runat="server" TextMode="Password"></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvAddPassword" runat="server" SetFocusOnError="true"
ControlToValidate="txtAddWebPassword" Display="None" ErrorMessage='<%# Constants.Strings.PasswordRequired %>'></asp:RequiredFieldValidator>
</FooterTemplate>
</asp:TemplateField>
:
は、ここで部分的GridViewのコードです。私の問題はこれです。ページが読み込まれると、下部にエンプティ行(フッター)を含むすべてのレコードが含まれます。データが入力された行の[編集]をクリックすると、データが正しく入力され、UPDATEを押すとFOOTER RFVの発砲からのエラーメッセージがすべて表示されますが、これは正しくありません。したがって、RowCommandイベントでは、私はこれを試みたいと思います:ユーザーがEDITボタンをクリックし、フッター行(新しい行の追加)のすべてのRFVを無効にします。
のアイデア?
申し訳ありませんが、これをはじめて入力してください。 RowCommandイベントでは、私がコントロールを見つけることができていますが、私は偽の何かにプロパティを設定すると、RowDataBoundイベントによって、後で上書き取得するようだ:あなたのEditItemTemplate
とで異なるValidationGroupsを使用する必要があります
RequiredFieldValidator rfv = (RequiredFieldValidator)gvUsers.FooterRow.FindControl("rfvAddWebLogin");
rfv.ControlToValidate = string.Empty;
rfv.ErrorMessage = "sdfgsdfgsdgsdfgsdfgsdfgsdfg";
rfv.Enabled = false;
のための空の行は何ですか - あなたが実際にそれが必要なのでしょうか? – dash
ええ、空行は新しい行を挿入するための行です。 – Robert