2013-02-21 86 views
0

我使用RegularExpressionValidators作爲ASP.NET窗體中的輸入文本框。如何觸發RegularExpressionValidator的客戶端驗證?

GUI看起來像。所有的項目都是服務器控件,當離開文本框時,如果輸入無效,我會顯示錯誤消息。

我已經在RegularExpressionValidator中使用EnableClientScript啓用了客戶端驗證。一旦我離開文本框,它立即啓動驗證器。但是,一旦點擊任何按鈕(導致生成回發),就會從屏幕上刪除正則表達式驗證器錯誤顯示。我該如何重新觸發客戶端驗證?

我用asp.net一個新手

--------------------------- 
|       | * Invalid input 
--------------------------- 

Listbox A   Listbox B 
------------  ------------ 
|   |  |   | 
|   |  |   | 
|   | >> |   | 
|   |  |   | 
|   |  |   | 
------------  ------------ 

代碼是這樣。

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> 
    <asp:TextBox ID="nameBox" runat="server" CssClass="StandardTextBox" Width="297px" 
     EnableViewState="true"></asp:TextBox> 
    <asp:RegularExpressionValidator ID="regExpValidatorRuleName2" align="left" runat="server" 
     ControlToValidate="nameBox" 
     Width="10px" Height="10px" 
     CssClass="StandardErrorLabel" 
     Display="Dynamic" 
     ErrorMessage="Input has Invalid character(s). Valid characters are a-z, A-Z, 0-9, _, @, ., -" 
     ValidationGroup="EditingPanel" 
     ValidationExpression="^[[email protected]]*$" 
     ToolTip="Input has Invalid character(s). Valid characters are a-z, A-Z, 0-9, _, @, ., -">*</asp:RegularExpressionValidator> 
    <asp:Panel ID="criteriaPanel1" GroupingText="Test" runat="server" 
     left="19px" CssClass="InputPanelTableLeft" Width="400px" Height="470px" Font-Bold="True" 
     Font-Size="X-Small"> 
     <table class="InputPanelTable"> 
      <tr> 
       <td align="left"> 
        <asp:ListBox ID="listboxA" Rows="10" runat="server" EnableViewState="true" 
         Width="150px" Height="100px"></asp:ListBox> 
       </td> 
       <td style="padding: 0px 5px 0px 5px" valign="middle"> 
        <asp:Button ID="buttonMove" runat="server" OnClick="buttonMove_OnClick" 
         Text="&gt;&gt;" ToolTip="Moves selected item from left side to right" /> 
       </td> 
       <td align="left"> 
        <asp:ListBox ID="listboxB" Rows="10" runat="server" EnableViewState="true" 
         Width="150px" Height="100px"></asp:ListBox> 
       </td> 
      </tr> 
     </table> 
    </asp:Panel> 
</asp:Content> 

回答

1

我發現buttonMove上點擊它時,導致回發。

驗證控件的錯誤消息不能持續回發。

您還沒有提到如何從一個列表框移動到列表框B.

因此,如果你可以使用JavaScript(我的意思是,不要用服務器端程序)移動從列表框中選擇一個元素列表框B,你的問題可以解決。

如果您有任何問題,請讓我知道。

+0

我可以使用客戶端腳本來解決這個問題,但有數據源附加到列表框。在這種情況下,情況並不理想。是否可以使用'UpdatePanel'解決這個問題? @ashokkumar – sarat 2013-02-22 03:55:59

+0

UpdatePanel也會導致回發,但唯一的區別是回發是異步發生的。您已經提到數據源已附加到列表框。即使那樣你也可以使用javascript將ListBox A中的元素移動到ListBox B.根據你的要求,將ListBox A中的元素移動到ListBox B只能通過JavaScript來發生,但是不會發生。如果您想知道如何使用Javascript在ListBoxes中移動數據,請告訴我一些示例數據。 – 2013-02-22 04:05:45

+0

我已經設法使用JavaScript編寫代碼來移動數據,但不幸的是數據源導致一些問題... ListboxA包含從數據庫檢索並作爲數據源附加到數據的數據。它包含簡單的文字(「1」,「2」也會這樣)。 – sarat 2013-02-22 04:22:24