我在sharepoint 2010中查询SPList并填充相应的网格视图:
<asp:DataGrid runat="server" ID="gridView" AutoGenerateColumns="false" AlternatingRowStyle-BackColor="ActiveBorder" Width="95%" GridLines="Vertical" AllowPaging="true" PageSize="30" CssClass="mGrid" PagerStyle-CssClass="pgr" AlternatingRowStyle-CssClass="alt" >
<Columns>
<asp:BoundColumn DataField="ID"></asp:BoundColumn>
<asp:BoundColumn DataField="Title"></asp:BoundColumn>
<asp:HyperLinkColumn DataTextField="Name" ></asp:HyperLinkColumn>
<asp:BoundColumn DataField="Surname"></asp:BoundColumn>
<asp:BoundColumn DataField="email"></asp:BoundColumn>
gridView.DataSource = items.GetDataTable();
如果我使用这行代码,则意味着当将其与网格视图一起使用时,它将允许我查看在SPlist中找到的所有项目。 但我需要能够仅显示List中的特定数据,因此我使用SPQuery使用以下代码过滤列表:
Guid webId = web.ID;
SPListItemCollection items = list.Items;
SPList currentTestList = web.Lists[listGuid];
// query
SPQuery oQuery = new SPQuery();
oQuery.ExpandRecurrence = true;
oQuery.Query = @"
<Where>
<Eq>
<FieldRef Name='Name' />
<Value Type='Text'>Adrian</Value>
</Eq>
</Where>
";
gridView.DataSource = list.GetItems(oQuery);
gridView.DataBind();
在执行时它引发了以下问题 &#34;名称为&#39; Surname&#39;的字段或属性未在所选数据源上找到&#34;。有人可以突出我的代码有什么问题吗?还是我错过了什么?因为当我使用&#34; getDataTable()&#34;它工作正常,但另一方面,在过滤列表时,会引发列出的错误。
答案 0 :(得分:0)
尝试以下方法:
SPListItemCollection objCollection =list.GetItems(oQuery);
gridView.DataSource = objCollection.GetDataTable();
gridView.DataBind();