gpt4 book ai didi

c# - 在后面的代码中将 UpdatePanel 转换为 Panel

转载 作者:太空宇宙 更新时间:2023-11-03 16:50:58 25 4
gpt4 key购买 nike

在编辑过程中,我使用的 CMS 在我的一些自定义控件和母版页中遇到了 UpdatePanels。我想根据页面是否正在编辑将它们动态转换为 Page_Load 或 Page_Init 或其他内容上的常规面板。

我想将页面上的所有 UpdatePanel 动态转换为面板。找到 UpdatePanels 不是问题,我所有的页面都继承自一个公共(public)基类,我所有的控件都继承自一个公共(public)基类——因此我可以覆盖 Page_Init 或其他任何东西。

我怀疑我无法将 UpdatePanel 转换为常规面板。我想过也许找到 UpdatePanel,向 UpdatePanel 的父级添加一个面板,然后遍历每个 UpdatePanel 的控件并将它们添加到新面板,然后删除 UpdatePanel。

但是如果我添加一个新的面板,它会在最后,你能在中间添加一个面板吗……也许用插入?这应该不难,但我是不是太难了?有更简单的方法吗?有人做过这样的事情吗?

谢谢,埃里克

更新我最终覆盖了我的 MasterPage 基类上的 OnInit 函数,以便在根据 Philippe 的评论移动后将 UpdatePanel 重新添加到 ScriptManager http://msmvps.com/blogs/luisabreu/archive/2006/11/16/adding-removing-updatepanels-dynamicaly-from-a-page.aspx

protected override void OnInit(EventArgs e)
{
if (Page is CMSPage && Page.IsDesignMode())
{
foreach (UpdatePanel up in this.FindControls<UpdatePanel>())
{
up.Load += UpdatePanel_Load;
}
}

base.OnInit(e);
}

private void UpdatePanel_Load(object sender, EventArgs e)
{
UpdatePanel panel = sender as UpdatePanel;

MethodInfo m = (from methods in typeof(ScriptManager).GetMethods(BindingFlags.NonPublic | BindingFlags.Instance)
where methods.Name.Equals("System.Web.UI.IScriptManagerInternal.RegisterUpdatePanel")
select methods).First();

if (panel == null || m == null)
return;

m.Invoke(ScriptManager.GetCurrent(Page), new object[] { panel });
}

最佳答案

我很确定没有办法将 UpdatePanel 转换为 Panel - 至少没有简单的方法。当您将 UpdatePanel 添加到您的页面时,.Net 将添加一个带有大量 javascript 的脚本引用以使 UpdatePanel 工作。这可能是您的 CMS 遇到的问题。这些包通常会与某些 .Net Ajax javascript 函数(如 $get 或类似函数)发生名称冲突。

如果您坚持有时使用 UpdatePanel 有时不使用的模型,唯一的解决方案是在页面上放置一个面板,并在每次您想要使用它时在代码后面动态构建 UpdatePanel。

我倾向于同意 Raul 的观点,您或许应该尝试找出另一个原因。如果您的 CMS 不喜欢它们,请尝试使用除 UpdatePanels 之外的其他一些 ajax 方法(PageMethods、jQuery .ajax 调用或老式的 javascript XMLHttprequest)。

关于c# - 在后面的代码中将 UpdatePanel 转换为 Panel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4011443/

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