Используйте Web Money - это очень удобно
Показаны сообщения с ярлыком ListViewWebPart. Показать все сообщения
Показаны сообщения с ярлыком ListViewWebPart. Показать все сообщения

вторник, 27 мая 2008 г.

Фильтр данных ListViewWebPart.

Ранее я написал об изменении перчня столбцов.
Изменение перечня столбцов в ListViewWebPart "на лету".
Сегодня хочу добавить об изменении схемы SPQuery на лету.
Это нужно для того, что бы отображать на одной странице релевантную информацию в зависимости от заданных параметров, или просто сделать расшириный фильтр с полной функциональностью SPQuery.
Для более стабильной работы необходимо:
Создать свойство с Guid View вебчасти.
Получив веб часть как указано в ссылке
Проверяем совпадение guid и меняем схему query.
if (lv.ViewGuid == _viewGuid)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.InnerXml = lv.ListViewXml;
XmlNode node;
node = xmlDoc.DocumentElement;
node["Query"].InnerXml = "<Where>" + "<Eq><FieldRef Name='ParentId'/><Value Type='Text'>" + _DocumentID.ToString() + "</Value></Eq>" + "</Where>";
lv.ListViewXml = xmlDoc.InnerXml;
}


PS. Таким же образом можно поменять и другие части схемы отображения.

вторник, 12 февраля 2008 г.

Изменение перечня столбцов в ListViewWebPart "на лету".

Доброго времени суток!
Итак передо мно возникла проблема: отображать различную информацию на одной странице веб частей в зависимости от пользователя, параметра или состояния процесса(проекта) информация о котором отображается.
Задача возникла из необходимости придерживаться одного интерфейса для редактирования и просмотра элементов списка (редактирование косвенное через мой интерфейс). Причем со всеми возможностями Sharepoint.
Итак имеем: список, набор полей которые отображаются всегда, + поле редактирование(мое кастомизированное поле) + набор столбцов - соответствующих пользователям.
Каждый пользователь должен видеть либо мой столбец, либо свой результат.
Или при передаче параметра результат другого человека.
Решение:
Создаем свою веб часть. В ней обращаемся к SPWebPartManager.
SPWebPartManager spwp = (SPWebPartManager)this.WebPartManager;
Ищем необходимую веб часть и меняем у нее listViewWebPart.ListViewXml через XmlDocument xmlDoc = new XmlDocument();
xmlDoc.InnerXml = listViewWebPart.ListViewXml
node = xmlDoc.DocumentElement;
Меняем схему - она довольно сложна поэтому я просто создал веб часть с необходимым мне представлением (со столбцом результата вместо моего кастомного поля) скопировал эту схему вместо текущей схемы.
Заменил в ней параметры:
node.Attributes[0].Value = viewName;//View Name веб части
и название поля на мое - обязательно внутренне(internalName)( для примера Название-Title)
Присвоил listViewWebPart.ListViewXml = xmlDoc.InnerXml;
Все.
Кроме того что я указал также можно написать веб часть поиска, т.к. в схеме указывается CAML запрос. Т.е. можно изменить не только перечень столбцов но и перечень элементов, группировку и т.п. смотрите xml схему.