0
我做了一個小桌子,以允許編輯,刪除和插入記錄:Disabing MaskedEditValidator和MaskedEditExtender
表(DataGridView中,結合)很簡單:單擊編輯去「編輯」模式(提供「取消」),輸入新值並單擊「添加」插入新記錄。
每個字段都有一組規則(x和y之間,所有的數字),所以它們被設置到一個MaskedEditExtender和MaskedEditValidator:
(實施例爲第1列):
<asp:TemplateField HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Right" FooterStyle-HorizontalAlign="Right" HeaderText="First bus #">
<ItemTemplate>
<asp:Label runat="server" ID="BusIdStartLabel" Text='<% #Bind("BusIdStart","{0:D4}") %>' />
</ItemTemplate>
<EditItemTemplate>
<ajaxToolkit:MaskedEditExtender runat="server" ID="BusIdStartTextBoxMaskedEditExtender" TargetControlID="BusIdStartTextBox" BehaviorID="EditBusIdStartTextBoxBehavior"
MaskType="Number"
Mask="9999" PromptCharacter=" "
InputDirection="RightToLeft"
OnInvalidCssClass="maskedEditError" OnFocusCssClass="maskedEditFocus"
AutoComplete="False" ErrorTooltipEnabled="True" MessageValidatorTip="False" />
<ajaxToolkit:MaskedEditValidator runat="server" ID="BusIdStartTextBoxMaskedEditValidator" ControlToValidate="BusIdStartTextBox" ControlExtender="BusIdStartTextBoxMaskedEditExtender"
MinimumValue="0" MaximumValue="9999"
IsValidEmpty="False" Display="None"
InvalidValueMessage="Enter a value between 0000 and 9999"
MaximumValueMessage="Enter a value between 0000 and 9999"
EmptyValueMessage="Enter a value between 0000 and 9999" />
<asp:TextBox runat="server" ID="BusIdStartTextBox" Text='<% #Bind("BusIdStart","{0:D4}") %>' Width="2.5em" Height="13px" CssClass="rightAlignTextBox" />
</EditItemTemplate>
<FooterTemplate>
<ajaxToolkit:MaskedEditExtender runat="server" ID="BusIdStartTextBoxMaskedEditExtender" TargetControlID="BusIdStartTextBox" BehaviorID="FooterBusIdStartTextBoxBehavior"
MaskType="Number"
Mask="9999" PromptCharacter=" "
InputDirection="RightToLeft"
OnInvalidCssClass="maskedEditError" OnFocusCssClass="maskedEditFocus"
AutoComplete="False" ErrorTooltipEnabled="True" MessageValidatorTip="False" />
<ajaxToolkit:MaskedEditValidator runat="server" ID="BusIdStartTextBoxMaskedEditValidator" ControlToValidate="BusIdStartTextBox" ControlExtender="BusIdStartTextBoxMaskedEditExtender"
MinimumValue="0" MaximumValue="9999"
IsValidEmpty="False" Display="None"
InvalidValueMessage="Enter a value between 0000 and 9999"
MaximumValueMessage="Enter a value between 0000 and 9999"
EmptyValueMessage="Enter a value between 0000 and 9999" />
<asp:TextBox runat="server" ID="BusIdStartTextBox" Width="2.5em" Height="13px" CssClass="rightAlignTextBox" />
</FooterTemplate>
</asp:TemplateField>
問題:點擊表格的任何鏈接(編輯,刪除)會觸發的所有驗證。因此,單擊「編輯」會觸發「插入」行的驗證(返回「無效」)。我以爲我會禁用此:
<asp:LinkButton runat="server" ID="ActionEditLink" CommandName="Edit" Text="Edit" OnClientClick="DeactivateValidation()" />
...
function DeactivateValidation() {
TryDispose('EditBusIdStartTextBoxBehavior');
TryDispose('FooterBusIdStartTextBoxBehavior');
//etc.
}
function TryDispose(behaviorId) {
var behavior = window.$find(behaviorId);
if (behavior != null)
behavior.dispose();
}
但驗證之後仍然活躍,板塊的聯繫。我如何真的停用客戶端的驗證?