0

我有一个可视化的 Web 部件(沙盒),可以可视化用于添加子站点的表单。当添加子站点时,它会添加到导航和 DropDownlist 中(用于删除目的......)。

我的问题是回发后一切正常,除了我必须手动重新加载页面以查看新更改(导航和下拉列表)。请注意,Response.RedirectUpdatePanel都不能在沙盒解决方案中工作。

有人有解决这个问题的方法吗?

4

1 回答 1

3

当您执行回发时,您的浏览器会将所有 Web 控件的内容提交给服务器。从这个意义上说,服务器是无状态的;控件的状态实际上存储在您的浏览器中。我会说您的问题发生是因为 Web 控件不是从 SharePoint 对象模型填充的。相反,服务器使用接收到的数据作为回发。或者,人口甚至可能发生,但回发数据将覆盖控件的内容。

解决方案是在从回发数据填充控件之后刷新控件数据。例如,您可以在OnPreRender方法中执行此操作。调用 OnPreRender 时,所有回发数据都已处理完毕。

尝试在您的 webpart 类中添加以下代码。

protected override void OnPreRender(EventArgs args)
{
    if (this.Page.IsPostBack)
    {
        // Repopulate controls here
    }
}

当然,这个问题是重新填充将杀死控件的先前(回发)状态。因此,如果要保留控件的当前值(例如下拉选择),则必须在重新填充之前将其保存并手动恢复。

要了解有关 ASP.NET 中页面生命周期的更多信息,请参阅ASP.NET 页面生命周期概述

于 2012-11-09T10:40:02.890 回答