2017-10-06 27 views
0

我们使用callbackpanel为的DevExpress控件的验证,但什么是真正发生的事情是:表单数据保存和确认消息也显示

如果我们点击,而不在表单文本框中输入任何东西提交按钮。它显示验证消息,但它也将空白数据保存到数据库。

我想知道是否显示验证消息,为什么后端的事件正在调用保存数据?

+1

没有人能够给你一个答案没有一些代码张贴在这里。 – CalC

+0

我猜测有JavaScript错误,阻止验证器正确触发。但你应该总是做服务器端验证,因为JavaScript可以很容易被禁用。 – VDWWD

回答

0

基本上在DevExpress ASPxCallbackPanel中,一个Button Click不会触发回调,它会触发一个Postback,这是UpdatePanel和CallbackPanel之间的区别。

所以你必须调用ASPxCallbackPanelClient.PerformCallback('PARAM');代替

你没有提到如何触发回调,你没有表现出你的ASPxButton代码看起来还是你的ASPxCallbackPanel的外观或如何您的验证看起来,所以考虑到请看下面的代码,在你的作品非常好场景

所有控件DX,包括验证和按钮

<dx:ASPxCallbackPanel runat="server" ID="cbpDIActions" ClientInstanceName="cbpDIActions" OnCallback="cbpDIActions_Callback"> 
    <panelcollection> 
        <dx:PanelContent> 

<dx:ASPxSpinEdit ID="txtBuilFixtNoBathrooms" runat="server" ValidationSettings-RequiredField-IsRequired="true" ValidationSettings-ValidationGroup="SubmitValidation"> 

            </dx:ASPxSpinEdit> 


<dx:ASPxButton ID="btn" runat="server" AutoPostBack="false" Text="Process" UseSubmitBehavior="False" 
       ValidationSettings-ValidationGroup="SubmitValidation" CausesValidation="true" 
       > 
       <ClientSideEvents Click="function(s,e){ 
        ASPxClientEdit.ValidateGroup('SubmitValidation'); 
        if (ASPxClientEdit.AreEditorsValid()) { 
         if(!cbpDIActions.InCallback()) { 
          cbpDIActions.PerformCallback('PARAM');} 
         }         
        }" /> 
      </dx:ASPxButton> 

        </dx:PanelContent> 
       </PanelCollection>     
      </dx:ASPxCallbackPanel> 

而在后端,你把所有的代码在回调事件

protected void cbpDIActions_Callback(object sender, DevExpress.Web.CallbackEventArgsBase e) 
    { 

     if (e.Parameter != null && e.Parameter.ToString() == "PARAM") 
     { 
//PROCESS YOUR CODE 
} 
}