我有2个Sharepoint列表。我需要从两个列表中选择一些随机列,并将其显示在ASP.NET GRIDVIEW中。我已经使用Linq完成了这段代码。但我收到一条错误消息,指出该参数为null异常。我能知道这种错误的原因吗?
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Linq;
using System.Linq;
using System.Text.RegularExpressions;
using System.Text;
using System.IO;
using System.Diagnostics;
namespace SharePointProject3.VisualWebPart1
{
public partial class VisualWebPart1UserControl : UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
string sQuery = string.Empty;
string sWebUrl;
SPListItemCollection objProductListItems = null;
SPListItemCollection objOrderListItems = null;
string sViewFields = string.Empty;
sWebUrl = SPContext.Current.Site.Url;
sQuery = "<OrderBy><FieldRef Name='Modified' Ascending='FALSE' /></OrderBy>";
sViewFields = string.Concat("<FieldRef Name='ProductId'/>",
"<FieldRef name= 'ProductName' />",
"<FieldRef name= 'ProductDescription' />");
objProductListItems = GetListItems(sWebUrl, "Products", sQuery, sViewFields);
sViewFields = string.Concat("<FieldRef Name='OrderId'/>",
"<FieldRef name= 'Quantity' />",
"<FieldRef name= 'ProductName' />");
objOrderListItems = GetListItems(sWebUrl, "Orders", sQuery, sViewFields);
var Orders = (from itemProduct in objOrderListItems.Cast<SPListItem>()
join itemOrder in objOrderListItems.Cast<SPListItem>()
on Convert.ToString(itemProduct["ProductName"]) equals Convert.ToString(itemOrder["ProductName"])
select new
{
ProductName = Convert.ToString(itemProduct["ProductName"]),
ProductDescription = Convert.ToString(itemProduct["ProductDescription"]),
OrderQuantity = Convert.ToString(itemOrder["Quantity"]),
}).ToList();
if(Orders != null)
{
GridView1.DataSource = Orders;
GridView1.DataBind();
}
}
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
}
public static SPListItemCollection GetListItems(string sWebUrl, string sListName, string sQuery, string sviewFields)
{
SPListItemCollection objListItemCollection = null;
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite objSite = new SPSite(sWebUrl))
{
using (SPWeb objWeb = objSite.OpenWeb())
{
SPList objList = objWeb.Lists.TryGetList(sListName);
if (objList != null)
{
SPQuery objSPQuery = new SPQuery();
objSPQuery.Query = sQuery;
objSPQuery.ViewFields = sviewFields;
objListItemCollection = objList.GetItems(objSPQuery);
}
}
}
});
return objListItemCollection;
}
}
}
使用Linq2SharePoint不是一个好主意。有很多问题。包括性能问题。有时,它会产生奇怪的错误,并且很难对其进行调试。您在代码中使用CAML。CAML也可以加入。请参阅此处的操作方法。它由SharePoint本身处理,您将获得单个结果集。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句