Статическая переменная на уровне класса для экземпляра - PullRequest
1 голос
/ 29 января 2010

Я пытаюсь сделать следующее:

Мне нужна статическая переменная, чтобы получить ListItemCollection из элемента управления List (я могу сделать это, но если я не установил его как Shared, он не сохраняет значения, как должно). Дело в том, что этот класс является веб-частью SharePoint, поэтому я, скорее всего, буду использовать веб-часть более одного раза, и мне нужно, чтобы эта переменная была уникальной для каждой веб-части, которая не доступна для общего доступа.

Я перепробовал все, что ты можешь себе представить. Я поместил статическую переменную в Sub (совместно используемая и не совместно используемая), я попробовал ее с помощью свойств (также совместно используемых и не совместно используемых) ...

Любые идеи приветствуются.

Спасибо.

Ответы [ 3 ]

1 голос
/ 29 января 2010

По определению, статические члены для каждого класса (или для каждого потока с атрибутом ThreadStatic).

0 голосов
/ 29 января 2010

Я наконец пошел другим путем, я просто добавил несколько флажков в панель инструментов и установил свойства веб-части.

В любом случае, я пытался сделать следующее:

Наличие веб-части, которая меняет свои элементы управления в режиме редактирования и просмотра. В режиме редактирования я показываю два элемента управления ListBox, две кнопки (добавить, удалить). Когда я нажимаю кнопку добавления, значение должно быть удалено из левого ListBox и добавлено к правому ListBox, пока все хорошо, что я смог создать эту функциональность без проблем ... Дело в том, когда я возвращаюсь к Режим просмотра Мне нужно использовать элементы в ListBox справа для показа (поэтому я добавил элемент управления ListItemCollection, который будет хранить значения из ListBox справа), текст элемента и элемент управления TextBox, а затем пользователь будет введите их текст в это текстовое поле и нажмите кнопку «Поиск», и будет выполнен поисковый запрос.

Моя проблема в том, что когда я перехожу из Edit в Browse, переменная ListItemCollection, которую я добавил, перезапускается. Поэтому я объявил его как Shared, и это работает, но когда я добавляю новый экземпляр WebPart, у них отображаются одинаковые поля ... Я не знаю, есть ли способ сделать статическую переменную уровня класса это уникально для каждого экземпляра, поэтому я пошел по пути ToolPart ...

0 голосов
/ 29 января 2010

Если вам нужно сохранить свойство на веб-части, добавьте 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

Это то, что вы ищете? Если нет, можете ли вы уточнить немного?

...