我在母版页的子页面中有一个用户控件,我需要根据复选框的选中状态显示一个面板。
我可以使用jQuery来实现这一点,但我需要Ajax。现在,如果您熟悉DX CallbackPanel,您就会知道此控件就像ASP.NET更新面板一样。
当我选中我的复选框时,我调用了一个调用CallbackPanel.PerformCallback()
函数的JavaScript函数,而这个函数就是这样做的。
这是我的用户控件:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="dx_auto_saxs_sales.ascx.cs" Inherits="bime.shokri.v1._0._1.Forms.dx_auto_saxs_sales" %>
<%@ Register Assembly="DevExpress.Web.v15.2, Version=15.2.10.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" Namespace="DevExpress.Web" TagPrefix="dx" %>
<script type="text/javascript">
var CallbackInQue = false;
function CheckBoxBimeSalQabl_CheckedChanged(s,e)
{
if (ASPxCallbackPanel.InCallback())
CallbackInQue = true;
else
ASPxCallbackPanel.PerformCallback();
}
function OnEndCallback(s,e)
{
if(CallbackInQue)
{
ASPxCallbackPanel.PerformCallback();
CallbackInQue = false;
}
}
</script>
<dx:ASPxCheckBox ID="ASPxCheckBox2" runat="server" Theme="MetropolisBlue" Text="بیمه نامه سال قبل دارد" Font-Names="yekan" CheckState="Unchecked" ClientInstanceName="ChechBoxBimeSalQabl">
<ClientSideEvents CheckedChanged="CheckBoxBimeSalQabl_CheckedChanged" />
</dx:ASPxCheckBox>
<dx:ASPxCallbackPanel ID="ASPxCallbackPanel" runat="server" ClientInstanceName="ASPxCallbackPanel">
<SettingsLoadingPanel Text="صبر کنید&hellip;" />
<ClientSideEvents EndCallback="OnEndCallback" />
<PanelCollection>
<dx:PanelContent runat="server">
<asp:Panel runat="server" ID="pnl_formerBimeName">
<div class="three fields">
<div class="field">
<label>تعداد سال های تخفیف <span style="color: #c66050">●</span></label>
<dx:ASPxComboBox ID="ASPxComboBox7" runat="server" ValueType="System.String" BackColor="#efefef" CssClass="round-corner-control" Theme="MetropolisBlue" Font-Names="yekan" NullText="انتخاب کنید" Width="90%">
<Items>
<dx:ListEditItem Text="1 سال عدم خسارت" Value="0" />
</Items>
</dx:ASPxComboBox>
</div>
</div>
</asp:Panel>
</dx:PanelContent>
</PanelCollection>
</dx:ASPxCallbackPanel>
目的是在选中CheckBox时显示Panel(pnl_formerBimeName)
。
现在这是我的Page_Load(sender,object)方法,当选中Checkbox时,该方法称为异步:
protected void Page_Load(object sender, EventArgs e)
{
pnl_formerBimeName.Visible = ASPxCheckBox2.Checked;
}
在将我的网站部署到我的服务器之前,一切正常。之后,当我选中“正在加载...”复选框时,文本会出现并永远完成。我真的不知道为什么。
万一你想知道这个问题在行动中,我会给你提到的页面here。