0

我在 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 中找到的所有项目。但我需要能够只显示列表中的特定数据,因此我使用 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();

但在执行时,它会引发以下问题“在所选数据源上找不到名为“姓氏”的字段或属性”。有人可以强调我的代码有什么问题吗?还是我错过了什么?因为当我使用“getDataTable()”时它工作正常,但另一方面在过滤列表时会引发列出的错误。

4

1 回答 1

0

尝试以下操作:

SPListItemCollection objCollection =list.GetItems(oQuery);
gridView.DataSource = objCollection.GetDataTable(); 
gridView.DataBind();
于 2013-12-20T10:56:51.767 回答