2012-03-30 5 views
0

ItemTemplateに検証コントロールが埋め込まれていると、GridViewのコマンドボタンが正しく起動しないのはなぜですか? クライアント側でユーザーの入力を検証できない場合でも、EditItemTemplateを許可する点は何ですか?検証コントロールが埋め込まれているときにGridViewコマンドボタンが起動しない

頭痛は再現しにくいですが、TemplateFieldである少なくとも1つの列を持つ単純なGridViewを作成するだけです。 EditItemTemplateにテキストボックスとRequiredFieldValidatorを配置します。

誰でもこの問題/問題/頭痛の回避策がありますか?

答えて

0

ボタンのValidationGroupを持っていないと思います。

<asp:Button ID="Button1" runat="server" ValidationGroup='GridView1' CausesValidation='true' Text="Button" /> 
+0

私はそれを試してもまだ動作しません。有効な唯一の方法は、検証コントロールを削除することです。私は真剣に代替としてリストビューを見ている。最初のテストでは、ListViewはバリデータで分解されません。 – RichardB

+0

ValidationGroup = 'GridView1'の名前にButtonとRequiredFieldValidatorコントロールの名前が似ていることを確認してください。 –

+0

それも試しました。この時点で、私はListViewを使っています。あなたのお役に立っていただきありがとうございます – RichardB

0

あなたはこのようASPxTextBox ValidationGroupを設定する必要があります:

<EditItemTemplate> 
    <dx:ASPxTextBox ValidationSettings-ValidationGroup='<%# Container.ValidationGroup %>' ../> 
</EditItemTemplate> 

は、詳細な説明のためhereを見て、このような何かを試してみてください。

+0

ご意見ありがとうございます。ただし、あなたのソリューションはDevExpressコントロールでのみ機能します。 Microsoft GridViewでバインディング式を実行しようとしましたが、次のエラーが表示されます。 'System.Web.UI.IDataItemContainer'に 'ValidationGroup'の定義が含まれていません – RichardB

+0

OK。なぜあなたの質問はaspxgridviewでタグ付けされていますか? – Filip

+0

私の悪い、私はそれを間違ってタグ付け – RichardB

0

私はこの問題を解決しました。

gridviewの特定の列に検証を挿入する場合は、その列をtemplateに変更します。通常どおりにバリデータを追加し、(通常どおり)バリデーショングループ名を付けます。 commandfield edit updateカラムで、そのカラムもtemplateフィールドに変換してから、 "update" textlinkのvalidationgroup名を設定します。

希望するものがあります。

0

同様の問題が発生しました。 QAは、ユーザー設定用にセットアップしたDatGridで更新コマンドが起動していないと報告しました。 DataGridの外では、特定の設定が行われたときにのみ表示される2つの非表示の入力フィールドがありました。しかし、私のテストでは、クリックを更新すると、これらのフィールドがあるdivの全体的な高さが増えたことに気付きました。これらのフィールドの検証コントロールが発砲していました。

問題は確かに、検証コントロールのValidationGroup設定に関連しているようです。

私はEditCommandColumnをテンプレートフィールドに変換する必要はなく、単にEditItemTemplateのValidationコントロールとともにValidationGroup属性を追加するだけでした。以下のサンプルは、私のために働いた実装に基づいています:

<div class="row"> 
     <div runat="server" id="divConfirm"> 
      <div class="formfields float-off form-group"> 
       <div class="col-xs-4 text-right"> 
        <p class="align-middle">Field 1</p> 
       </div> 
      </div> 
      <div class="formfields float-off form-group"> 
       <div class="col-xs-4"> 
        <input runat="server" id="confirm1" name="confirm1" /> 

        <!-- this control was firing prior to adding the validation group --> 
        <asp:RequiredFieldValidator runat="server" ID="valConfirmReq" 
         Display="Dynamic" ControlToValidate="confirm1" 
         ErrorMessage="*You must confirm etc. message"> 
        </asp:RequiredFieldValidator> 

       </div> 
      </div> 
     </div> 
    </div> 

    <asp:DataGrid ID="DataGrid1" runat="server" OnEditCommand="DataGrid_EditCommand" 
     OnCancelCommand="DataGrid1_CancelCommand" 
     OnUpdateCommand="DataGrid1_UpdateCommand"> 
      <Columns> 
       <asp:EditCommandColumn EditText="Edit" HeaderText="Edit" 
       UpdateText="Update" CancelText="Cancel" ValidationGroup="DataGrid1"> 
       <%-- DataGrid code --%> 
       <asp:TemplateColumn> 
        <EditItemTemplate> 
         <asp:DropDownList ID="ddl1" runat="server"></asp:DropDownList> 
         <asp:RequiredFieldValidator ID="rfvDDL" runat="server" 
         ErrorMessage="*Please Select" 
         ValidationGroup="DataGrid1" 
         Display="Dynamic" 
         ControlToValidate="ddl1" 
         InitialValue="Select"> 
         </asp:RequiredFieldValidator> 
        </EditItemTemplate> 
       </asp:TemplateColumn> 
      </Columns> 
     </asp:DataGrid> 
関連する問題