页面上多次视觉网页(问题保存个性化状态问题)
-
16-10-2019 - |
题
我需要建立一个预算报告,该报告具有与6个不同类别的相同关键字段。我编写了一个视觉网络部分,该部分为每个部分拉一个ListItem,并与编辑按钮一起显示数据。 Webpart中还有一个自定义属性来存储预算类型:
public class ProjectDetailsView : WebPart
{
// Visual Studio might automatically update this path when you change the Visual Web Part project item.
private const string _ascxPath = @"~/_CONTROLTEMPLATES/SpecialProjectsProjectList/ProjectDetailsView/ProjectDetailsViewUserControl.ascx";
[Personalizable(), WebBrowsable]
public String BudgetType { get; set; }
protected override void CreateChildControls()
{
ProjectDetailsViewUserControl control = Page.LoadControl(_ascxPath) as ProjectDetailsViewUserControl;
//Control control = Page.LoadControl(_ascxPath);
if (control != null)
{
control.WebPart = this;
}
Controls.Add(control);
}
}
}
我在同一页面上添加了6次视觉Wepart。似乎只有第一个控件实际上是保存自定义属性。这可能是代码中的错误,还是在同一页面上没有多次具有相同的WebPart?
如果有人已经知道我需要每节创建一个单独的控件,我不想花几个小时调试。非常感谢!
解决方案 2
我现在发现了为什么我无法将自定义属性保存在GUI中。我正在从Spcontext关闭当前的Web对象。显然,这不应按照框架处理。一旦我从WebPart用户控件中删除了Currentite.dispose()(),我就可以正确保存自定义属性。
其他提示
如果要多次将Web零件放在页面上,则Web部件的每个实例都需要具有唯一的ID。这是您可以做的事情的样本:
control.ID = this.ID + "_ProjectDetailsControl";