Я разрабатываю веб-страницу в Asp.Net 1.1 и имею DataGrid, которая позволяет пользователям добавлять, редактировать и удалять записи базы данных. Строка нижнего колонтитула содержит текстовые поля, позволяющие добавлять новые записи.Как контролировать, какие валидаторы используются в DataGrid
Для каждого столбца я определил <ItemTemplate>, <EditItemTemplate> и <FooterItemTemplate> элементы. Элементы 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>
У меня есть проблема в том, что при попытке изменить существующую запись, пустые поля в нижней строке предотвратить проверку и, следовательно, обратной передачи и обновления выбранной строки.
Как получить доступ к валидаторам? У меня нет программного доступа к ним. Я могу получить доступ к валидаторам EditItemTemplate с помощью аргумента Редактировать событие, но я не вижу, как попасть на валидаторы FooterItemTemplate. –
Если у вас есть доступ к объекту EditItemTemplate, вы сможете получить доступ к GridView, а затем к FooterTemplate. Это даст уродливый код :-( Возможно, самое лучшее, что нужно сделать, это прекратить использование FooterTemplate и добавить пустую строку в GridView, если вы хотите вставить новую запись. –