【发布时间】:2011-12-18 22:04:02
【问题描述】:
我在更新面板中有一个 GridView。它是一个继承的 asp:GridView,所以它有一个小的“导出我”图标,它就是这样做的。它通过使用 XLS 文件响应“导出”单击来工作。问题是如果你把智能 GridView 放在更新面板中,ASP.NET 认为 XLS 文件要写入面板,这显然不是我们想要的。为此,我每次都需要完整的回发。
我的更新面板都是以编程方式生成的
在这种精确场景中不起作用的解决方案(其中许多在 SO 的其他地方都有介绍):
在版本 4 之前的 ASP.NET 中,如果您将 ID 留在控件之外,它甚至会在更新面板中执行完整的回发。我的问题只针对最新最好的 .NET 4。
ScriptManager.RegisterPostBackControl 看起来很有希望。它确实使控件回发使用正确的面板 ID 作为事件目标,但没有其他帮助。
将 PostBackTrigger 添加到更新面板。我的更新面板是以编程方式生成的,MS 声明这不受支持。我的测试表明它们是正确的:我尝试了各种方法,但都不起作用。
我不太喜欢智能 GridView 必须脱离自身的想法,但在这种情况下,我试图让它在 updatePanel 之外放置一个额外的控件。这个想法是让客户端单击面板内的导出按钮被客户端javascript重定向,以模拟对面板外该按钮的单击。但是这不起作用,因为我显然无法将“外部”控件添加到页面 - 我得到“在 DataBind、Init、Load、PreRender 或 Unload 阶段无法修改控件集合。”错误。
使用 jQuery 将“导出”控件移到面板外。 MS 必须有一些他们认为“在”面板中的控件列表,并且 DOM 中的物理位置无关紧要。
有没有人知道如何让它发挥作用?我知道很多这种应该工作,但那不完全一样。
【问题讨论】:
标签: c# asp.net asp.net-ajax updatepanel