0

我做了一個小桌子,以允許編輯,刪除和插入記錄:Disabing MaskedEditValidator和MaskedEditExtender

enter image description here

表(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(); 
} 

但驗證之後仍然活躍,板塊的聯繫。我如何真的停用客戶端的驗證?

回答

0

做這樣做的方法是使用CausesValidation並將它設置爲False:

<asp:LinkButton runat="server" ID="ActionEditLink" CommandName="Edit" Text="Edit" CausesValidation="False" /> 
<asp:LinkButton runat="server" ID="ActionCancelLink" CommandName="Cancel" Text="Cancel" CausesValidation="False" /> 
相關問題