1

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

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

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

欢迎任何想法。

谢谢。

4

3 回答 3

1

By definition, static members are per-class (or per-thread with a ThreadStatic attribute).

于 2010-01-28T23:24:44.177 回答
0

我终于走了另一种方式,我只是在 toolpart 中添加了一些复选框并在 webpart 上设置了属性。

无论如何,我想做的是:

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

我的问题是,当我从编辑转到浏览时,我添加的 ListItemCollection 变量正在重新启动。所以我将它声明为共享,这确实有效,但是当我添加 WebPart 的新实例时,它们显示了相同的字段......我不知道是否有一种方法可以执行静态类级变量每个实例都是独一无二的,所以我采用了 ToolPart 方式......

于 2010-01-29T14:45:52.767 回答
0

如果您需要在 webpart 上保存属性,请在属性上添加WebPartStorageAttribute ,并在其中添加FriendlyNameAttribute以使其干净:

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

这就是你所追求的吗?如果不是,您能否进一步澄清一下?

于 2010-01-28T23:14:08.810 回答