Как отфильтровать Sharepoint:ListView
В VS2010 у меня есть проект SharePoint 2010 со страницей приложения. На этой простой странице у меня есть информация заголовка о заказе и SharePoint:ListView для деталей продукта. Итак, я просто хочу отфильтровать этот ListView по OrderId:
SPWeb myWeb = SPControl.GetContextWeb(Context);
SPList lstOrderDetail = myWeb.Lists["OrderDetail"];
SPView vwOrderDetail = lstProductosPedidos.Views["ShortedForCustomer"];
lvOrderDetail.ListId = lstOrderDetail.ID.ToString("B").ToUpperInvariant();
lvOrderDetail.ViewId = vwOrderDetail.ID.ToString("B").ToUpperInvariant();
lvOrderDetail.DataBind();
Этот код показывает список всех элементов в списке "OrderDetail".
Я пытался сделать с SPQuery, но я не знаю, как связать SPListItemCollection (результат запроса) с SharePoint:ListView.
SPQuery qryOrderDetail = new SPQuery(vwOrderDetail);
qryOrderDetail.Query = string.Format(@"
<Where>
<Eq>
<FieldRef Name='OrderId' LookupID='True'/>
<Value Type='Number'>{0}</Value>
</Eq>
</Where>", iOrderID);
SPListItemCollection lstOrderDetailFiltered = lstProductosPedidos.GetItems(qryOrderDetail);
Как я могу отфильтровать SharePoint:ListView с результатом SPQuery? Я использую неправильные компоненты?
Заранее спасибо...
2 ответа
Хорошая попытка там!
Вы можете установить строку запроса через представление списка query
параметр. Поэтому, учитывая ваш код выше, вам понадобится следующее:
SPView vwOrderDetail = lstProductosPedidos.Views["ShortedForCustomer"];
vwOrderDetail.Query = string.Format(@"
<Where>
<Eq>
<FieldRef Name='OrderId' LookupID='True'/>
<Value Type='Number'>{0}</Value>
</Eq>
</Where>", iOrderID);
vwOrderDetail.Update();
Пример, который вы можете найти здесь: Использование класса SPView SharePoint и CAML в качестве языка запросов и MSDN здесь: SPView.Query
,
Этот код работает для меня.
SPSite oSite = new SPSite([Site URL]);// [Site URL] change it to your sharepoint site URL
SPWeb oWeb = oSite.OpenWeb();
SPList oList = oWeb.Lists["shared documents"];
SPViewCollection oViewCollection = oList.Views;
string strViewName = "MyCustomView";
System.Collections.Specialized.StringCollection viewFields =
new System.Collections.Specialized.StringCollection();
viewFields.Add("Name");
viewFields.Add("Type");
string query = "<Where><Eq><FieldRef Name=\"Name\"/>" +
"<Value Type=\"Text\">mysample</Value></Eq></Where>";// here you can filter your items using the selected
item in the dropdownlist
oViewCollection.Add(strViewName, viewFields, query, 100, true, false);
oWeb.Update();