gpt4 book ai didi

asp.net-mvc - 当内容包含 PageControl 或 TabControl 时,DevExpress CallbackPanel PerformCallback 挂起

转载 作者:行者123 更新时间:2023-12-01 23:43:29 35 4
gpt4 key购买 nike

当页面上发生单独的客户端操作时,我想按需刷新 TabControl 中的选项卡。我已将 TabControl 扩展(也尝试过 PageControl)放在 CallbackPanel 中,并且 EndCallBack 事件永远不会触发。如果 ShowLoadingPanel 设置为 true,您会看到调用挂起,因为加载面板永远不会消失。 OnBeginCallback 和实际的 Controller 回调操作都会被执行。我假设面板和选项卡之间发生了某种冲突的回调,但我不知道如何解决它。如果我用基本 html 或其他更简单的 DevExpress 控件替换 TabControl,一切都会正常工作。

TabControl 部分(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()

面板部分(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 配置。具体来说 - 将压缩元素上的 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>

最佳答案

如果我在这件事上浪费了任何人的时间,我很抱歉。最后,问题是我所有的非 DevExpress 脚本都位于布局主体的底部。我需要将 jQuery 移至 DevExpress 脚本之前的头部。奇怪的是,在出现此问题之前,其他一切都运行良好。感谢任何尝试重现的人。

关于asp.net-mvc - 当内容包含 PageControl 或 TabControl 时,DevExpress CallbackPanel PerformCallback 挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18149325/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com