Как контролировать, какие валидаторы используются в DataGrid - PullRequest
0 голосов
/ 17 февраля 2009

Я занимаюсь разработкой веб-страницы в Asp.Net 1.1 и имею DataGrid, который позволяет пользователям добавлять, редактировать и удалять записи базы данных. Строка нижнего колонтитула содержит текстовые поля, позволяющие добавлять новые записи.

Для каждого столбца я определил элементы , и . Элементы FooterItemTemplate и EditItemTemplate в моей разметке aspx содержат как элементы управления RequiredFieldValidator, так и текстовые поля. (см. ниже)

<asp:TemplateColumn HeaderText="Offer Code">
  <ItemTemplate>
    <%# DataBinder.Eval(Container, "DataItem.OfferCode") %>
  </ItemTemplate>
  <FooterTemplate>
    <asp:TextBox ID="txtNewOfferCode" Runat="server" />
<asp:RequiredFieldValidator ID="reqNewOfferCode" ControlToValidate="txtNewOfferCode" Display="None" ErrorMessage="Please specify 'Offer Code'" Runat="server" />
  </FooterTemplate>
  <EditItemTemplate>
<asp:TextBox id=txtOfferCode Runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.OfferCode") %>' />
<asp:RequiredFieldValidator ID="reqOfferCode" ControlToValidate="txtOfferCode" Display="None" ErrorMessage="Please specify 'Offer Code'" Runat="server" />
  </EditItemTemplate>
</asp:TemplateColumn>

Проблема, с которой я столкнулся, заключается в том, что при попытке редактировать существующую запись пустые поля в строке нижнего колонтитула препятствуют проверке и, следовательно, обратной передаче и обновлению выбранной строки.

1 Ответ

2 голосов
/ 17 февраля 2009

Обычно GridView не может вставлять новые строки. Вы сделали трюк, используя строку нижнего колонтитула. Конечно, когда вы отправляете свой GridView, валидаторы блокируют процесс, потому что поля пусты. Вам следует перехватить событие, когда ваш GridView переходит в режим редактирования, и отключить валидаторы нижнего колонтитула. Не забудьте включить их, когда выходите из режима редактирования GridView.

...