Я запрашиваю список SPList в sharepoint 2010 и заполняю соответствующее представление сетки:

<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 ()", он работает нормально, но, с другой стороны, при фильтрации списка возникает указанная ошибка.

0
Adrian De Barro 19 Дек 2013 в 18:20

1 ответ

Лучший ответ

Попробуйте следующее:

SPListItemCollection objCollection =list.GetItems(oQuery);
gridView.DataSource = objCollection.GetDataTable(); 
gridView.DataBind();
0
Jinxed 20 Дек 2013 в 14:56