0
我们使用callbackpanel为的DevExpress控件的验证,但什么是真正发生的事情是:表单数据保存和确认消息也显示
如果我们点击,而不在表单文本框中输入任何东西提交按钮。它显示验证消息,但它也将空白数据保存到数据库。
我想知道是否显示验证消息,为什么后端的事件正在调用保存数据?
我们使用callbackpanel为的DevExpress控件的验证,但什么是真正发生的事情是:表单数据保存和确认消息也显示
如果我们点击,而不在表单文本框中输入任何东西提交按钮。它显示验证消息,但它也将空白数据保存到数据库。
我想知道是否显示验证消息,为什么后端的事件正在调用保存数据?
基本上在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
}
}
没有人能够给你一个答案没有一些代码张贴在这里。 – CalC
我猜测有JavaScript错误,阻止验证器正确触发。但你应该总是做服务器端验证,因为JavaScript可以很容易被禁用。 – VDWWD