Используйте Web Money - это очень удобно

вторник, 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. Таким же образом можно поменять и другие части схемы отображения.

2 комментария:

Анонимный комментирует...

Мой фильтр для ListViewWebPart работает по описанному принципу и меня все устраивало до тех пор пока я не стал использовать коннекции. Как только ListViewWebPart содержит коннекцию он больше не реагирует на попытки изменить ListViewXml. Уважаемый Gleb, столкнулись ли Вы с подобной проблемой. Возможно Вы можете что то посоветовать?

Gleb комментирует...

Проблема в том, что "коннекции" (связи вебчастей)отрисовывают web part уже после изменения XML. А следовательно отрисовывают исходный xml.
Я сделал так:
добавил скрытую вебчасть. Связал ее с нужной мне частью.
А потом распарсив параметры URL View={A944A0C8-F28C-4EC6-83F1-5C1F866066C0}&SelectedID=63
изменил xml вебчасть с которой якобы связана вебчасть с которой берутся данные.