Использование XsltListViewWebPart для динамически изменяемого представления элементов списка
Многие разработчики сталкиваются с ситуацией, когда им необходимо осуществить вывод элементов списка в представлении, близком к оригинальному представлению списков SharePoint. При этом использование SPD или создание целого набора представлений списка не желательно.
В этом случае нам может помочь создание собственных элементов управления, содержащих стандартную XsltListViewWebPart.
Что для этого необходимо:
1. Создать web-часть или ascx-файл, содержащий определение XsltListViewWebPart:
<SharePoint:XsltListViewWebPart ID="listView" runat="server" />
2. В одном из событий элемента управления, установить необходимые свойства:
// Получить представление и список
SPList list= web.GetList(SPUrlUtility.CombineUrl(web.ServerRelativeUrl, "/lists/list" ));
SPView view = list.Views[0];
XElement viewElement = XElement.Parse(view.HtmlSchemaXml);
// Изменить Xml содержимое представление в соответствии со схемой CAML и требуемыми параметрами отображения
XElement curQueryElement = viewElement.Element("Query");
XElement newQueryElement= new XElement("Eq",new XElement("FieldRef", new XAttribute("Name", "Category"), new XAttribute("LookupId", "TRUE")),new XElement("Value", new XAttribute("Type", "Lookup" ), {Value} ));
if(null == curQueryElement.Element("Where" ))
curQueryElement.Add(new XElement("Where" , newQueryElement));
else
curQueryElement.Element("Where").ReplaceWith(new XElement("Where" , newQueryElement));
// Обновить параметры нашей web-части
this.listView.ListName = list.ID.ToString("B").ToUpper();
this.listView.ChromeType = PartChromeType.None;
this.listView.ViewGuid = view.ID.ToString("B" ).ToUpper();
this.listView.XmlDefinition = viewElement.ToString();
Действуя таким образом, мы можем добиться полного соответствия визуального представления списка элементов стандартному, при этом, используя необходимые нам параметры представления.
Comments
- Anonymous
September 02, 2013
изменять XmlDefinnition не получится. больше информации здесь benredl.wordpress.com/.../using-the-xsltlistviewwebpart-with-a-custom-query