每个实例的类级静态变量

时间:2010-01-28 22:53:18

标签: vb.net sharepoint static web-parts shared

我正在尝试执行以下操作:

我需要一个静态变量来从List控件获取ListItemCollection(我可以这样做,但是如果我没有将它设置为Shared它不会保留它应该的值)。问题是这个类是一个SharePoint webpart,所以我很可能不止一次使用webpart,而且我需要这个变量对每个webpart都是唯一的,共享无法完成。

我尝试了你能想象到的一切。我在Sub(共享而非共享)中放置了一个静态变量,我尝试使用Properties(也是共享而不是共享)......

欢迎任何想法。

感谢。

3 个答案:

答案 0 :(得分:1)

根据定义,静态成员是每个类(或具有ThreadStatic属性的每个线程)。

答案 1 :(得分:0)

如果您需要在webpart上保存该属性,请在该属性上添加WebPartStorageAttribute,同时在该FriendlyNameAttribute上添加{{3}}以使其保持清洁:

C#版本:

[FriendlyNameAttribute("What the setting will be called")]
[WebPartStorage(Storage.Shared)]
private string MyStringThatGetsSaved { get; set; }

VB.Net版本:

<WebPartStorage(Storage.Personal), FriendlyNameAttribute("What the setting will be called")>
Private mMyStringThatGetsSaved As String
Public Property MyStringThatGetsSaved () As String
    Get
        Return mMyStringThatGetsSaved 
    End Get
    Set(ByVal Value As String)
        mMyStringThatGetsSaved = Value
    End Set
End Property

这就是你要追求的吗?如果没有,你能进一步澄清吗?

答案 2 :(得分:0)

我终于采用了另一种方式,我只是在工具部分添加了一些复选框,并在webpart上设置了属性。

无论如何,我想要做的是:

让Web部件更改其对Edit&amp ;;的控件。浏览模式。在编辑模式下,我显示两个ListBox控件,两个按钮(添加,删除)。当我单击添加按钮时,必须从左侧ListBox中删除该值并将其添加到右侧ListBox中,到目前为止,我能够很好地使这个功能没有问题......当我回到浏览模式我需要使用右侧的ListBox中的项目来显示(所以我添加了一个ListItemCollection控件,它将存储右侧ListBox中的值),项目文本和TextBox控件,然后用户将在该文本框中输入文本并点击“搜索”按钮,将执行搜索查询。

我的问题是,当我从编辑转到浏览ListItemCollection变量时,我添加了重新启动。所以我宣称它是共享的,这确实有效,但是当我添加一个新的WebPart实例时,它们显示了相同的字段......我不知道是否有办法做静态类级变量这对每个实例都是唯一的,所以我采用了ToolPart方式......