2013-02-21 76 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