В задачах разработки веб частей часто бывает необходимо сделать веб часть настраиваемой для повторного использования.

Когда веб часть добавляется на страницу, при первом отображении значения персонализированных свойств ещё не заданы.

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

Как это должно выглядеть:

В предыдущих версиях SharePoint и ASP.NET можно было написать следующий код:

this.WebPartManager.DisplayMode = this.WebPartManager.DisplayModes["Edit"];

this.WebPartManager.BeginWebPartEditing(this);

Однако теперь из-за повсеместного применения AJAX и каких-то других пока непонятных мне изменений такой способ не работает. Состояния редактирования нет в списке доступных для страницы. Однако именно оно видно при переходе в режим редактирования.

После некоторых поисков решения все свелось к вызову JavaScript функции:

Label l = new Label() { Text = "Список не выбран. Перейдите в режим редактирования для выбора списка. " };

Controls.Add(l);

 

HyperLink hl = new HyperLink() { Text = " Открыть редактор свойств" };

hl.NavigateUrl = string.Format("javascript:ShowToolPane2Wrapper('Edit', '129', '{0}');", this.ID);

hl.ID = string.Format("MsoFrameworkToolpartDefmsg_{0}", this.ID);

Controls.Add(hl);

В результате этот блок кода мы должны вставить в метод CreateChildControls веб части с проверкой задано ли значение персонализированного свойства.

Теперь интерфейс веб части стал дружественным по отношению к пользователю!

А вот, что собственно делалось: