回发后重新加载/刷新页面。 SharePoint,Visual Web部件(沙盒)

时间:2012-11-09 10:09:51

标签: sharepoint-2010 postback web-parts sandbox

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

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

任何人都能解决这个问题?

1 个答案:

答案 0 :(得分:3)

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

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

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

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

当然,问题在于,重新填充会杀死控件的先前(回发)状态。因此,如果要保留控件的当前值(例如下拉列表选择),则必须在重新填充之前保存它并手动将其还原。

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