2012-02-18 6 views
0

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; 
+0

のための空の行は何ですか - あなたが実際にそれが必要なのでしょうか? – dash

+0

ええ、空行は新しい行を挿入するための行です。 – Robert

答えて

2

FooterItemplate

<asp:TemplateField HeaderText=""> 
    <ItemTemplate> 
     <asp:Button ID="BtnEdit" CausesValidation="False" Text="Edit" CommandName="Edit" runat="server" /> 
    </ItemTemplate> 
    <EditItemTemplate> 
     <asp:Button ID="BtnUpdate" ValidationGroup="UpdateUser" Text="Update" CommandName="Update" runat="server" /> 
    </EditItemTemplate> 
    <FooterTemplate> 
     <asp:Button ID="BtnInsert" ValidationGroup="InsertUser" Text="Add" CommandName="Insert" runat="server" /> 
    </FooterTemplate> 
</asp:TemplateField> 
<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" ValidationGroup="UpdateUser" runat="server" TextMode="Password" Text='<%#Eval("WebPassword") %>'></asp:TextBox> 
     <asp:RequiredFieldValidator ID="rfvPassword" ValidationGroup="UpdateUser" runat="server" SetFocusOnError="true" 
      ControlToValidate="txtWebPassword" Display="None" ErrorMessage='<%# Constants.Strings.PasswordRequired %>'></asp:RequiredFieldValidator> 
    </EditItemTemplate> 
    <FooterTemplate> 
     <asp:TextBox ID="txtAddWebPassword" ValidationGroup="InsertUser" runat="server" TextMode="Password"></asp:TextBox> 
     <asp:RequiredFieldValidator ID="rfvAddPassword" ValidationGroup="InsertUser" runat="server" SetFocusOnError="true" 
      ControlToValidate="txtAddWebPassword" Display="None" ErrorMessage='<%# Constants.Strings.PasswordRequired %>'></asp:RequiredFieldValidator> 
    </FooterTemplate> 
</asp:TemplateField> 

http://msdn.microsoft.com/en-us/library/bb426882.aspx#aspnett19_vldcntredtuics_topic7

:あなたはValidationSummariesを使用している場合は、追加する必要がありますすべてのValidationSummaryに適切なValidationGroupを入力します。このプロパティを空白のままにすると、指定したValidationGroupのないコントロールのみが表示されます。

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.validationsummary.validationgroup.aspx

+0

ありがとう、これは完璧です。 ValidationSummaryコントロール(私のような)を使用している場合は、ValidationGroupプロパティも設定する必要があることにも注意してください。 – Robert

+0

ああ、作成するValidationGroupごとにValidationSummaryが必要です。私がそこに何かを紛失していない限り。 – Robert

+1

@ロバーツ:はい、それは編集のためにタイプミスでした。あなたは正しいです、あなたはすべてのValidationGroup(私の答えを編集します)ごとに別々のValidationSummaryが必要です。 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.validationsummary.validationgroup.aspx –

関連する問題