【发布时间】:2020-05-06 14:17:27
【问题描述】:
我正在尝试创建一个 Windows 窗体,用于将 SharePoint 列表中的信息填充到 Windows 窗体中。但是,当我尝试从列表中获取项目时,它会向我抛出一条错误消息
Microsoft.SharePoint.Client.dll 中出现“Microsoft.SharePoint.Client.PropertyOrFieldNotInitializedException”类型的未处理异常 附加信息:属性或字段尚未初始化。它尚未被请求或请求尚未执行。可能需要明确请求。”
这是相同的代码。
private void btn_populatecontainer_Click(object sender, EventArgs e)
{
var authManager = new AuthenticationManager();
ClientContext overviewlistClientcontext = authManager.GetWebLoginClientContext("Tenant URL");
var tenant = new Tenant(overviewlistClientcontext);
var siteProperties = tenant.GetSiteByUrl("SiteCollectionURL");
Web web = siteProperties.RootWeb;
List olist = web.Lists.GetByTitle("SiteOverviewList");
overviewlistClientcontext.Load(siteProperties);
overviewlistClientcontext.ExecuteQuery();
ListItemCollectionPosition position = null;
var page = 1;
do
{
CamlQuery camlQuery = new CamlQuery();
camlQuery.ViewXml = @"<View Scope='Recursive'><RowLimit>4000</RowLimit><Query><Where><Eq><FieldRef Name='Site URL'/><Value Type='Text'>" + txtSite.Text + "</Value></Eq></Where></Query></View>";
camlQuery.ListItemCollectionPosition = position;
ListItemCollection listItems = olist.GetItems(camlQuery);
overviewlistClientcontext.Load(listItems);
overviewlistClientcontext.ExecuteQuery();
position = listItems.ListItemCollectionPosition;
DataTable dataTable = new DataTable();
DataRow dr;
DataColumn dc = new DataColumn("Site Owner");
dc.DataType = Type.GetType("System.String");
dataTable.Columns.Add(dc);
foreach (var listItem in listItems)
{
dr = dataTable.NewRow();
dr["Site Owner"] = listItem["Site Owner"];
dataTable.Rows.Add(dr);
}
OverViewListGrid.DataSource = dataTable;
OverViewListGrid.DataBindings
page++;*/
}
while (position != null);
}
}
}
我已调试代码,但在从 Caml Query 获取后尝试执行查询时失败。
- 当 CamlQuery 被执行时,它根本不起作用。
- 但是,出于测试目的,我尝试获取其他列,如果我尝试使用内置函数(即
GetItembyID)直接获取 Title/Id 列,则代码可以正常工作。 - 但如果我使用同一列表中的另一列,即使是第二步也不起作用。
谁能帮我解决这个问题?
【问题讨论】:
标签: sharepoint-online csom threshold sharepoint-list