我们使用callbackpanel来验证Devexpress控件,但实际发生的是:
如果我们单击提交按钮而不在表单中的文本框中输入任何内容。它显示验证消息,但它也将空白数据保存到数据库中。
我想知道验证消息是否显示为什么后端的事件要求保存数据?
答案 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
}
}