【问题标题】:GridView Command Button Not Firing When Validation Controls Are Embedded嵌入验证控件时不触发 GridView 命令按钮
【发布时间】:2012-03-30 05:00:48
【问题描述】:

为什么当 ItemTemplate 中嵌入了验证控件时,GridView 的命令按钮不能正确触发? 如果您甚至无法在客户端验证用户的输入,那么允许 EditItemTemplate 有什么意义?!!!

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

有没有人有解决这个问题/问题/头痛的方法?

【问题讨论】:

    标签: asp.net validation datagridview


    【解决方案1】:

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

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

    【讨论】:

    • 我试过了,还是不行。它起作用的唯一方法是删除验证控件。我正在认真地将 ListView 视为替代品。在初始测试中,ListView 不会因验证器而崩溃。
    • 请确保 ValidationGroup='GridView1' 名称与 Button 和 RequiredFieldValidator 控件的名称相似。
    • 也试过了。在这一点上,我将使用 ListView。感谢大家的帮助
    【解决方案2】:

    您需要像这样设置 ASPxTextBox ValidationGroup:

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

    查看here 了解详细说明。

    【讨论】:

    • 感谢您的 cmets。但是,您的解决方案仅适用于 DevExpress 控件。我尝试在 Microsoft GridView 上运行您的绑定表达式,但出现以下错误:“System.Web.UI.IDataItemContainer”不包含“ValidationGroup”的定义
    • 好的。为什么您的问题被标记为 aspxgridview?
    【解决方案3】:

    我刚刚解决了这个问题。

    当您想在 gridview 的某个列中进行验证时,您可以将该列更改为模板。像往常一样添加你的验证器,给它validationgroup名称(像往常一样)。然后在命令字段编辑更新列,将该列也转换为模板字段,然后为“更新”文本链接设置验证组名称。

    希望有帮助。

    【讨论】:

      【解决方案4】:

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

      这个问题似乎与验证控件的 ValidationGroup 设置有关。

      Wan 的回答有点帮助,但是我不必将 EditCommandColumn 转换为模板字段,只需将 ValidationGroup 属性与 EditItemTemplate 中的 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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-02
        • 1970-01-01
        • 2015-10-11
        • 2015-10-17
        • 1970-01-01
        相关资源
        最近更新 更多