当我在页面上发生单独的客户端操作时,我想按需刷新TabControl中的选项卡。我已将我的TabControl扩展(也尝试过PageControl)放在CallbackPanel中,并且EndCallBack事件永远不会触发。如果ShowLoadingPanel设置为true,您会看到调用挂起,因为加载面板永远不会消失。 OnBeginCallback和实际的Controller回调操作都会被执行。我假设面板和选项卡之间存在某种冲突的回调,但我无法弄清楚如何解决它。如果我用基本的html或其他更简单的DevExpress控件替换TabControl,一切正常。
TabControl Partial(CallbackTestPageControl.cshtml):
@Html.DevExpress().TabControl(settings => {
settings.Name = "testTabControl";
settings.Width = Unit.Percentage(100);
settings.Tabs.Add("tab 1");
settings.Tabs.Add("tab 2");
settings.Tabs.Add("tab 3");
}).GetHtml()
Panel Partial(CallbackTestPanel.cshtml):
@Html.DevExpress().CallbackPanel(settings =>
{
settings.Name = "cbpTabStrip";
settings.CallbackRouteValues = new { Controller = "Home", Action = "CallbackTestPanel" };
settings.ClientSideEvents.BeginCallback = "OnBeginCallback";
settings.ClientSideEvents.EndCallback = "OnEndCallback";
settings.SetContent(() => Html.RenderPartial("CallbackTestPageControl"));
}).GetHtml()
查看(CallbackTest.cshtml):
<script type="text/javascript">
var testId = null;
function ButtonClicked(s, e) {
alert('click');
testId = 1;
if (!cbpTabStrip.InCallback())
cbpTabStrip.PerformCallback();
}
function OnBeginCallback(s, e) {
alert('begin');
e.customArgs["Id"] = testId;
testId = null;
}
function OnEndCallback(s, e) {
alert('end');
if (testId != null)
cbpTabStrip.PerformCallback();
}
</script>
@Html.DevExpress().Button(settings => {
settings.Name = "CallbackButton";
settings.Text = "Callback";
settings.ClientSideEvents.Click = "ButtonClicked";
}).GetHtml()
@Html.Partial("CallbackTestPanel")
Controller(HomeController.cs):
public ActionResult CallbackTest()
{
return View();
}
public ActionResult CallbackTestPanel()
{
int id = !String.IsNullOrEmpty(Request.Params["Id"]) ? int.Parse(Request.Params["Id"]) : 0;
return PartialView("CallbackTestPanel");
}
附加信息:另外,我已尝试根据其他在线建议更新web.config中的DevExpress配置。具体来说 - 将compression元素上的enableResourceMerging属性更新为false而不是true。这似乎允许回调间歇性地结束。我真的不想禁用资源合并,所以我很高兴这没有提供可靠的解决方案。所以,这就是我现在所拥有的:
<devExpress>
<themes enableThemesAssembly="true" styleSheetTheme="" theme="Office2010Silver" />
<compression enableHtmlCompression="true"
enableCallbackCompression="true"
enableResourceCompression="true"
enableResourceMerging="true" />
<settings rightToLeft="false" />
<errors callbackErrorRedirectUrl="" />
</devExpress>
答案 0 :(得分:9)
如果我浪费了任何人的时间,我很抱歉。最后,问题是我的所有非DevExpress脚本都在我的布局体底部。我需要在DevExpress脚本之前将jQuery移动到头部。奇怪的是,在此问题出现之前,其他一切都运转正常。感谢任何试图重现的人。
答案 1 :(得分:1)
我知道这是旧的,但我的问题是我启用了缓存,即
一旦我删除了一切正常。希望这有助于将来的其他人。