我遇到了webparts变量的麻烦......我来自标准的ASP语言,所以,对我来说,在会话和其他部分存储变量是做所有事情的常用方法=)
现在我必须创建一个webpart,wp必须从参数中编写一个图形,我无法理解HOW变量的工作原理:我无法理解WHEN保存和WHEN擦除以及其他类似的东西!
让我解释一下:我有一个带有配置工具栏的Web部件,我在其中放置了值。每次按下按钮或下拉列表中的值发生更改时,都会引发一个导致“CreateChild”的事件“功能..
很多时候数据是“存储”的,有时则不是!
这就是我用来存储值的方式(在ApplyChanges覆盖函数中):
WPChartGenerator wpParent = (WPChartGenerator)this.ParentToolPane.SelectedWebPart;
wpParent.WebUrl = txtWebUrl.Text.Trim();
在CreateChild事件中,我得到的值如下:
WPChartGenerator wpParent = (WPChartGenerator)this.ParentToolPane.SelectedWebPart;
this.ddlWeb = new DropDownList();
this.ddlWeb.ID = "ddlweb" + wpParent.ID;
ddlWeb.SelectedValue = wpParent.WebService;
现在..有时这是有效的,例如,当我按下按钮时我按下按钮的代码,然后代码存储每个值..在某些情况下(如按钮)这个工作,在其他(如下拉列表索引已更改事件)此操作失败,我发现wpParent中的每个对象都等于它的初始值。
我注意到的另一件事是,在某些情况下触发事件时,首先要执行的事情(甚至首先是事件的相关代码)il CreateChild(甚至首先是OnLoad !!!)
有人可以告诉我我做错了什么吗?对于这个问题,有人有很好的指导吗?
谢谢&抱歉4我的学校水平英语=)
忘记说每个变量都已经实现为属性,如:
[WebBrowsable(false)]
[Personalizable(PersonalizationScope.Shared)]
[WebPartStorage(Storage.Shared)]
public string WebUrl
{
get
{
return this.webUrl;
}
set
{
this.webUrl = value;
}
}
答案 0 :(得分:1)
我无法看到那里的所有代码所以我真的不知道你做错了什么(即你实际上有一个ApplyChanges方法)但是从你说出问题的方式来看,这听起来像你真的需要从头开始,按照其中一个演练教程,确保您了解基础知识,然后开始添加项目代码。
MSDN - Creating Web Parts for SharePoint (VS2010)
MSDN - Walkthrough: Creating a Basic SharePoint Web Part (WSS 3.0)