Командная кнопка GridView не срабатывает при встроенных элементах проверки - PullRequest
0 голосов
/ 30 марта 2012

Почему командные кнопки GridView не срабатывают должным образом, когда в ItemTemplate встроены элементы управления проверкой подлинности?Какой смысл разрешать EditItemTemplate, если вы даже не можете проверить ввод пользователя на стороне клиента? !!!

Головную боль несложно воспроизвести, просто создайте простой GridView хотя бы с одним столбцомэто TemplateField.Поместите текстовое поле и RequiredFieldValidator в шаблон EditItemTemplate.

У кого-нибудь есть решение этой проблемы / проблемы / головной боли?

Ответы [ 4 ]

0 голосов
/ 28 мая 2014

Я столкнулся с подобной проблемой.QA сообщило, что команда обновления не запускала DatGrid, который мы настроили для пользовательских настроек.За пределами DataGrid у нас было два скрытых поля ввода, которые были видны только при наличии определенных настроек.Тем не менее, во время тестирования я заметил, что нажатие кнопки «Обновить» увеличивает общую высоту элементов, в которых были эти поля;то есть проверяющие элементы управления для этих полей были запущены.

Эта проблема определенно связана с параметром ValidationGroup для элементов управления валидацией.

Ответ Вана был несколько полезен, однако мне не нужно было преобразовывать EditCommandColumn в поле шаблона, а нужно было просто добавить к нему атрибут ValidationGroup вместе с элементом управления Validation в EditItemTemplate.Пример ниже основан на реализации, которая работала для меня:

    <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>
0 голосов
/ 30 марта 2012

Вам нужно установить ASPxTextBox ValidationGroup следующим образом:

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

Смотрите здесь для подробного объяснения.

0 голосов
/ 08 марта 2013

Я только что решил эту проблему.

когда вы хотите поместить проверку в определенный столбец в gridview, вы изменяете этот столбец на шаблон.добавьте свой валидатор как обычно, дайте ему название группы валидации (как обычно).затем в командной строке изменить столбец обновления, преобразовать этот столбец также в поле шаблона, а затем задать имя группы проверки для текстовой ссылки «обновление».

надеюсь, что это поможет.

0 голосов
/ 30 марта 2012

Я полагаю, у вас нет группы ValidationGroup для кнопок.пожалуйста попробуйте что-то вроде этого:

<asp:Button ID="Button1" runat="server" ValidationGroup='GridView1' CausesValidation='true' Text="Button" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...