2017-10-06 23 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 
} 
}