GridView ItemTemplate - Validators not being called

  • Thread starter Thread starter Mel
  • Start date Start date
M

Mel

I have a GridView that is bound to a DataTable. I decided to allow
the user to change the column data right in the ItemTemplate. Then
user won't need to click Edit to change the values and then click
Update to save them because for this application the user will need to
edit the data in every row so I thought the ItemTemplate would be a
better solution. However, when I place the controls in my
ItemTemplate my Validators are not being called at all when they enter
invalid data. Won't the GridView work this way?

Here is a small snippet of one item template column:
<asp:TemplateField HeaderText="Duration (days)"
SortExpression="Duration">
<EditItemTemplate>
</EditItemTemplate>
<ItemTemplate>
<asp:TextBox ID="txtDuration" runat="server" Text='<%#
Bind("[Duration]") %>' Width="56px" CausesValidation="True"
Wrap="False" ValidationGroup="AllValidators"></asp:TextBox><br />
<asp:RequiredFieldValidator ID="rfvDuration" runat="server"
ControlToValidate="txtDuration"
ErrorMessage="Enter a Duration (number of days)."
SetFocusOnError="True" Display="Dynamic"
ValidationGroup="AllValidators"></asp:RequiredFieldValidator><br />
<asp:RangeValidator ID="rvDuration" runat="server"
ControlToValidate="txtDuration"
ErrorMessage="Enter a number between 0 and 365 days."
MaximumValue="365"
MinimumValue="0" SetFocusOnError="True" Display="Dynamic"
Type="Integer" ValidationGroup="AllValidators"></asp:RangeValidator>
</ItemTemplate>
<ItemStyle VerticalAlign="Top" />
</asp:TemplateField>
 
the control triggering the postback has to have causes validation set to
true, and have the validation group set to match your specification.

-- bruce (sqlwork.com)
 
Back
Top