Как уже упоминалось в заголовке, я пытаюсь получить данные из хранимой процедуры MSSQL 08 через внешний список.
Поскольку на моей машине не установлен Microsoft Office 2010, я не мог использовать IEntity для фильтрации и получения своих записей; Я считаю, что классы фильтров хранятся в Microsoft.Office.BusinessData.dll.
Ограничение на использование внешнего списка для фильтрации и извлечения данных.
Внешний список, созданный SharePoint Designer, работает отлично; Я могу просмотреть и отфильтровать хранимую процедуру, отредактировав фильтр источника данных, определенный в настройке представления.
Однако мое требование - программно фильтровать и извлекать элементы в C #.
Поэтому моей первой попыткой было просто запросить внешний список с использованием метода SPList.GetItems (SPView).
using (SPWeb web = SPContext.Current.Web){
SPList list = web.Lists[contextList.ID];
SPView view = list.Views[contextView.ID];
SPListItemCollection items = list.GetItems(view);
gridview1.DataSource = items.GetDataTable();
gridview1.Databind();
}
Однако описанному выше подходу удается только получить имя столбца из списка.
Похоже, что данные не извлекаются из списка.
Итак, моя вторая попытка состояла в том, чтобы запустить код с повышенными правами.
SPSite contextSite = SPContext.Current.Site;
SPWeb contextWeb = SPContext.Current.Web;
SPList contextList = contextWeb.Lists[listName];
SPView contextView = contextList.Views[0];
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite(contextSite.ID))
using (SPWeb web = site.OpenWeb(contextWeb.ID))
{
SPList list = web.Lists[contextList.ID];
SPView view = list.Views[contextView.ID];
SPListItemCollection items = list.GetItems(view);
gridview1.DataSource = items.GetDataTable();<br/>gridview1.Databind();
}
});
Используя 2-й подход, я столкнулся с исключением "несанкционированного разрешения".
Я совершенно не понимаю, почему я сталкиваюсь с этой проблемой. Ребята, есть ли у вас опыт извлечения элементов из хранимых процедур через SharePoint BCS?
Или есть более эффективные способы извлечения данных из хранимых процедур без повторения всех кодов в разных веб-частях?
--------------- Редактировать 5 октября ----------------------------- -
Я решил попробовать выполнить хранимую процедуру напрямую, а не через bcs.
Но так как некоторые хранимые процедуры довольно часто используются. Можно ли поделиться этим фрагментом кода, чтобы его можно было повторно использовать в разных веб-частях?
-------------- Редактировать 5 октября + 4 часа ---------------------
Я понимаю, что если я укажу значение по умолчанию для фильтра в операции чтения списка ECT. Я мог бы получить элемент в списке через: SPList.getItems (SPView);
Теперь возникает вопрос, как изменить фильтр программно.
Я пытался использовать SPView.Method, чтобы изменить значение по умолчанию. Однако, похоже, это работает.
<Method Name="getTeam">"
<Filter Name="code" Value="2"/>"
</Method>