Одна визуальная веб-часть Несколько раз на Странице (проблемы с сохранением состояния персонализации)

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/13749

Вопрос

У меня есть требование для создания бюджетного отчета, который содержит одни и те же ключевые поля для 6 разных категорий.Я написал визуальную веб-часть, которая извлекает listitem для каждого раздела и отображает данные вместе с кнопкой редактирования.В веб-части также есть пользовательское свойство для хранения типа бюджета:

 public class ProjectDetailsView : WebPart
    {
        // Visual Studio might automatically update this path when you change the Visual Web Part project item.
        private const string _ascxPath = @"~/_CONTROLTEMPLATES/SpecialProjectsProjectList/ProjectDetailsView/ProjectDetailsViewUserControl.ascx";

        [Personalizable(), WebBrowsable]
        public String BudgetType { get; set; }

        protected override void CreateChildControls()
        {
            ProjectDetailsViewUserControl control = Page.LoadControl(_ascxPath) as ProjectDetailsViewUserControl;
            //Control control = Page.LoadControl(_ascxPath);
            if (control != null)
            {
                control.WebPart = this;
            }

            Controls.Add(control);
        }
    }
}

Я добавлял этот визуальный фрагмент 6 раз на одной и той же странице.Кажется, что только первый элемент управления фактически сохраняет пользовательское свойство.Вероятно, это ошибка в коде, или у вас не может быть одного и того же веб-раздела несколько раз на одной странице?

Я не хочу тратить часы на отладку, если кто-то уже знает, что мне нужно создать отдельный элемент управления для каждого раздела.Большое спасибо!

Это было полезно?

Решение 2

Теперь я понял, почему я не смог сохранить пользовательские свойства в графическом интерфейсе.Я закрывал текущий веб-объект из SPContext.Очевидно, что этого не следует делать, поскольку это обрабатывается фреймворком.Как только я удалил свой текущий сайт.Dispose() из моего finally в пользовательском элементе управления webpart я смог правильно сохранить пользовательские свойства.

Другие советы

Если вы собираетесь размещать веб-часть на странице несколько раз, каждый экземпляр веб-части должен иметь уникальный идентификатор.Вот пример того, что вы могли бы сделать:

control.ID = this.ID + "_ProjectDetailsControl";

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top