2010-01-28 4 views
1

Я пытаюсь сделать следующее:класса уровня статической переменной в Instance

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

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

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

Спасибо.

ответ

0

Если вам необходимо сохранить свойство на веб-части, добавить WebPartStorageAttribute на имущество, а также бросить на FriendlyNameAttribute там, чтобы сделать его чистым:

C# Версия:

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

VB. Чистая версия:

<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 

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

+0

Не могли бы вы добавить пример в vb.net, поскольку вопрос помечен как таковой. –

+0

@ Lachlan: Спасибо, пропустили тег ... добавили обе версии сейчас, на случай, если кто-то в C# отправится за этим и нуждается в нем. –

+0

Я попробовал как Storage.Personal, так и Storage.Shared, никто не работал. Я думаю, что это связано с тем, что переменная является массивом (ListItemCollection), и это похоже на то, что добавление не вызывает Set. Поэтому я попытался сделать временную переменную и установить ее, но она не работает ... Я попытаюсь использовать флажки и несколько свойств для всех вещей в массиве, который я хочу отобразить. При необходимости я сделаю сообщение с более подробной информацией. Благодарю. – Santiago

1

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

+0

Без атрибута ThreadStatic (http://msdn.microsoft.com/en-us/library/system.threadstaticattribute%28VS.71%29.aspx) переменная Shared (VB) будет для класса и для AppDomain. Если требуется более широкий охват (например, для каждого процесса или машины), общий объем недостаточен. –

0

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

Во всяком случае, то, что я пытаюсь сделать, это:

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

Моя проблема заключается в том, что когда я перехожу из «Редактировать», чтобы просмотреть переменную ListItemCollection, добавленную мной, перезапускается. Поэтому я объявил его как общий, и это действительно работает, но когда я добавляю новый экземпляр WebPart, у них отображаются одинаковые поля ... Я не знаю, есть ли способ сделать переменную Static Class-Level что уникально для каждого экземпляра, поэтому я пошла по пути ToolPart ...

Смежные вопросы