1

在 VS2010 中,我有一个带有应用程序页面的 SharePoint 2010 项目。在这个简单的页面中,我有关于订单的标题信息和用于产品详细信息的SharePoint:ListView 。所以,我只想按 OrderId 过滤 ListView:

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);

如何使用 SPQuery 的结果过滤 SharePoint:ListView?我使用了不正确的组件?

提前致谢...

4

2 回答 2

0

不错的尝试!

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();

您可以在此处找到示例:使用 SharePoint 的 SPView 类和 CAML 作为查询语言和 MSDN 此处:SPView.Query

于 2011-10-06T09:19:10.503 回答
0

这段代码为我运行。

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();
于 2012-02-24T11:13:04.380 回答