I have a gridview in my application that contains textboxes. I want the user to be able to edit the value in the textbox without having to invoke the gridview "edit" method. I need to validate the input. The valid data is a number less than or equal to 1,000. I was using regular expressions to check for numeric value but the client wants to check for the size of the number, too. I cannot get the validation to execute. The HTML markup for the grid is shown below. Can you find something wrong with this? Why isn't the validation kicking off?
<dx:ASPxGridView ID="gridFormulas" runat="server" AutoGenerateColumns="False" ClientIDMode="AutoID"
ClientInstanceName="grid" CssFilePath="~/App_Themes/Aqua/{0}/styles.css" CssPostfix="Aqua"
KeyFieldName="IPCNUMBER" Width="1024px">
<Columns>
<dx:GridViewCommandColumn ShowInCustomizationForm="True" ShowSelectCheckbox="True"
VisibleIndex="0" Width="24px" AllowDragDrop="False" FixedStyle="Left">
<ClearFilterButton Visible="True">
</ClearFilterButton>
</dx:GridViewCommandColumn>
<dx:GridViewDataTextColumn FieldName="IPCNUMBER" ShowInCustomizationForm="True" VisibleIndex="1"
Width="96px" Caption="IPC NUMBER" FixedStyle="Left">
<Settings AllowSort="True" SortMode="DisplayText" />
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="CHEMICALNAME" ShowInCustomizationForm="True"
VisibleIndex="2" Width="304px" Caption="MATERIAL NAME" FixedStyle="Left">
<Settings AllowSort="True" SortMode="DisplayText" />
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="DOSE1" ShowInCustomizationForm="True"
VisibleIndex="3" Width="150px" FixedStyle="Left" Caption="-" Name="Formula1">
<DataItemTemplate>
<dx:ASPxTextBox ID="txtbox1" runat="server" Value='<%#Bind("DOSE1")%>' Width="64px" OnValueChanged="validNumber" OnValidation="validNumber">
<ValidationSettings CausesValidation="True" Display="Dynamic"
ErrorDisplayMode="Text" ErrorText="Number <= 1000"
ErrorTextPosition="Bottom" SetFocusOnError="True" ValidateOnLeave="true" EnableCustomValidation="True">
</ValidationSettings>
</dx:ASPxTextBox>
</DataItemTemplate>
<HeaderStyle HorizontalAlign="Center" />
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="DOSE2" ShowInCustomizationForm="True"
VisibleIndex="4" Width="150px" FixedStyle="Left" Caption="-" Name="Formula2">
<DataItemTemplate>
<dx:ASPxTextBox ID="txtbox2" runat="server" Value='<%#Bind("DOSE2")%>' Width="64px">
<ValidationSettings CausesValidation="True" Display="Dynamic"
ErrorDisplayMode="Text" ErrorText="Number <= 1000"
ErrorTextPosition="Bottom" SetFocusOnError="True">
<RegularExpression ErrorText="Number <= 1000"
ValidationExpression="^[-+]?(\d+)?(\.\d+)?$" />
</ValidationSettings>
</dx:ASPxTextBox>
</DataItemTemplate>
<HeaderStyle HorizontalAlign="Center" />
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="DOSE3" ShowInCustomizationForm="True"
VisibleIndex="5" Width="150px" FixedStyle="Left" Caption="-" Name="Formula3">
<DataItemTemplate>
<dx:ASPxTextBox ID="txtbox3" runat="server" Value='<%#Bind("DOSE3")%>' Width="64px">
<ValidationSettings CausesValidation="True" Display="Dynamic"
ErrorDisplayMode="Text" ErrorText="Number <= 1000"
ErrorTextPosition="Bottom" SetFocusOnError="True">
<RegularExpression ErrorText="Number <= 1000"
ValidationExpression="^[-+]?(\d+)?(\.\d+)?$" />
</ValidationSettings>
</dx:ASPxTextBox>
</DataItemTemplate>
<HeaderStyle HorizontalAlign="Center" />
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="DOSE4" ShowInCustomizationForm="True"
VisibleIndex="6" Width="150px" FixedStyle="Left" Caption="-" Name="Formula4">
<DataItemTemplate>
<dx:ASPxTextBox ID="txtbox4" runat="server" Value='<%#Bind("DOSE4")%>' Width="64px">
<ValidationSettings CausesValidation="True" Display="Dynamic"
ErrorDisplayMode="Text" ErrorText="Number <= 1000"
ErrorTextPosition="Bottom" SetFocusOnError="True">
<RegularExpression ErrorText="Number <= 1000"
ValidationExpression="^[-+]?(\d+)?(\.\d+)?$" />
</ValidationSettings>
</dx:ASPxTextBox>
</DataItemTemplate>
<HeaderStyle HorizontalAlign="Center" />
</dx:GridViewDataTextColumn>
</Columns>
<SettingsBehavior AllowDragDrop="False" AllowGroup="False" AllowSort="False" />
<SettingsPager Mode="ShowAllRecords" PageSize="50" Visible="False">
</SettingsPager>
<Settings VerticalScrollableHeight="450" VerticalScrollBarStyle="Virtual" ShowGroupButtons="False"
ShowHeaderFilterBlankItems="False" />
<SettingsLoadingPanel ImagePosition="Top" />
<Images SpriteCssFilePath="~/App_Themes/Aqua/{0}/sprite.css">
<LoadingPanelOnStatusBar Url="~/App_Themes/Aqua/GridView/gvLoadingOnStatusBar.gif">
</LoadingPanelOnStatusBar>
<LoadingPanel Url="~/App_Themes/Aqua/GridView/Loading.gif">
</LoadingPanel>
</Images>
<ImagesEditors>
<DropDownEditDropDown>
<SpriteProperties HottrackedCssClass="dxEditors_edtDropDownHover_Aqua" PressedCssClass="dxEditors_edtDropDownPressed_Aqua" />
</DropDownEditDropDown>
<SpinEditIncrement>
<SpriteProperties HottrackedCssClass="dxEditors_edtSpinEditIncrementImageHover_Aqua"
PressedCssClass="dxEditors_edtSpinEditIncrementImagePressed_Aqua" />
</SpinEditIncrement>
<SpinEditDecrement>
<SpriteProperties HottrackedCssClass="dxEditors_edtSpinEditDecrementImageHover_Aqua"
PressedCssClass="dxEditors_edtSpinEditDecrementImagePressed_Aqua" />
</SpinEditDecrement>
<SpinEditLargeIncrement>
<SpriteProperties HottrackedCssClass="dxEditors_edtSpinEditLargeIncImageHover_Aqua"
PressedCssClass="dxEditors_edtSpinEditLargeIncImagePressed_Aqua" />
</SpinEditLargeIncrement>
<SpinEditLargeDecrement>
<SpriteProperties HottrackedCssClass="dxEditors_edtSpinEditLargeDecImageHover_Aqua"
PressedCssClass="dxEditors_edtSpinEditLargeDecImagePressed_Aqua" />
</SpinEditLargeDecrement>
</ImagesEditors>
<ImagesFilterControl>
<LoadingPanel Url="~/App_Themes/Aqua/Editors/Loading.gif">
</LoadingPanel>
</ImagesFilterControl>
<Styles CssFilePath="~/App_Themes/Aqua/{0}/styles.css" CssPostfix="Aqua">
<LoadingPanel ImageSpacing="8px">
</LoadingPanel>
</Styles>
<StylesEditors>
<CalendarHeader Spacing="1px">
</CalendarHeader>
<ProgressBar Height="25px">
</ProgressBar>
</StylesEditors>
</dx:ASPxGridView>