嵌入验证控件时,GridView命令按钮不会触发

时间:2012-03-30 05:00:49

标签: asp.net validation datagridview

当ItemTemplate中嵌入了验证控件时,为什么GridView的命令按钮无法正常启动? 如果你甚至无法在客户端验证用户的输入,那么允许EditItemTemplate有什么意义呢?!!!

头痛并不难重现,只需创建一个简单的GridView,其中至少有一列是TemplateField。在EditItemTemplate上放置一个文本框和一个RequiredFieldValidator。

是否有人针对此问题/问题/头痛解决了这个问题?

4 个答案:

答案 0 :(得分:0)

我猜你没有按钮的ValidationGroup。请尝试这样的事情:

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

答案 1 :(得分:0)

您需要像这样设置ASPxTextBox ValidationGroup:

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

查看here以获取详细说明。

答案 2 :(得分:0)

我刚刚解决了这个问题。

如果要将验证放在gridview中的某个列中,则将该列更改为模板。像往常一样添加验证器,给它验证组名称(像往常一样)。然后在命令字段编辑更新列,将该列也转换为模板字段,然后为“更新”文本链接设置验证组名称。

希望有所帮助。

答案 3 :(得分:0)

我遇到了类似的问题。 QA报告更新命令未在我们为用户设置设置的DatGrid上触发。在DataGrid之外,我们碰巧有两个隐藏的输入字段,只有在某些设置到位时才可见。但是,我在测试中注意到点击更新增加了这些字段所在的div的总高度;即这些字段的验证控件正在触发。

问题肯定与验证控件的ValidationGroup设置有关。

Wan的答案有点帮助,但是我没有必要将EditCommandColumn转换为模板字段,只需要在EditItemTemplate中将ValidationGroup属性与Validation控件一起添加。下面的示例基于对我有用的实现:

    <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>