表单数据正在保存,并且还显示验证消息

时间:2017-10-06 16:30:28

标签: asp.net devexpress

我们使用callbackpanel来验证Devexpress控件,但实际发生的是:

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

我想知道验证消息是否显示为什么后端的事件要求保存数据?

1 个答案:

答案 0 :(得分:0)

基本上在DevExpress ASPxCallbackPanel中,按钮单击不会触发回调,它会触发回传,这是UpdatePanel和CallbackPanel之间的区别。

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

你没有提到你是如何触发回调的,你没有说明你的ASPxButton代码看起来如何,或者你的ASPxCallbackPanel看起来如何以及你的Validator看起来如何,所以考虑到这一点,请看下面的代码在你的场景中非常有效

所有控件都是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
}
}