Добавить WebReference к Lists.asmx в узел SharePoint.
HTTP://локальный / _vti_bin / Lists.asmx
(SharePoint URL виртуального каталога / _vti_bin / Lists.asmx
написать следующие методы в вашем веб-сервиса.
частных data.DataTable GetDataTableFromWSS(BOOL onlySchema)
{
Строка WssSiteUrl = HTTP://192.168.111.21;
Строка WssSiteUrl = ConfigurationSettings.AppSettings[“WssSiteUrl”];
WssSite.Lists списки = новый WssSite.Lists();
lists.Url = WssSiteUrl + “_vti_bin / Lists.asmx”;
lists.Credentials = System.Net.CredentialCache.DefaultCredentials;
lists.PreAuthenticate = True;
//Вы должны пройти Список имя здесь
Строка CommandText = “Сотрудник Информация”;
XmlNode ListCollectionNode = lists.GetListCollection();
XmlElement список = (XmlElement)ListCollectionNode.SelectSingleNode(String.Format(“WSS:Список[@ Title = '{0}"]”, CommandText), NameSpaceMgr);
если (Список == NULL)
{
бросать новые ArgumentException(String.Format(“Список {0} не может быть найдена на сайте {1}”, CommandText, WssSiteUrl));
}
Строка TechListName = List.GetAttribute(“Имя”);
data.DataTable результат = новый data.DataTable(“Список”);
XmlNode узел = listinfo lists.GetList(TechListName);
System.Text.StringBuilder fieldRefs = новый System.Text.StringBuilder();
System.Collections.Hashtable DisplayNames = новый System.Collections.Hashtable();
Еогеасп (XmlElement поле в ListInfoNode.SelectNodes(“WSS:Поля / WSS:Поле”, NameSpaceMgr))
{
если (Field.HasChildNodes)
{
Еогеасп (XmlElement Fld в Field.SelectNodes(“WSS:Поля / WSS:Поле”, NameSpaceMgr))
{
Строка FieldName = Fld.GetAttribute(“Имя”);
Строка FieldDisplayName = Fld.GetAttribute(“DisplayName”);
если (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + FieldName + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(Поле));
fieldRefs.AppendFormat(“”, FieldName);
DisplayNames.Add(FieldDisplayName, FieldName);
}
}
еще
{
Строка FieldName = Field.GetAttribute(“Имя”);
Строка FieldDisplayName = Field.GetAttribute(“DisplayName”);
если (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + FieldName + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(Поле));
fieldRefs.AppendFormat(“”, FieldName);
DisplayNames.Add(FieldDisplayName, FieldName);
}
}
если (onlySchema) Возвращаемый результат;
XmlElement полей = ListInfoNode.OwnerDocument.CreateElement(“ViewFields”);
fields.InnerXml = fieldRefs.ToString();
XmlNode ItemsNode = lists.GetListItems(TechListName, “”, нуль, полей, “1000000”, нуль);
// Поля подстановок всегда начинаются с числовым идентификатором, то ;# , а затем строковое представление.
// Мы, как правило, заинтересованы только в названии, поэтому мы Газа ID.
System.Text.RegularExpressions.Regex CheckLookup = новый System.Text.RegularExpressions.Regex(“^ D ;#”);
Еогеасп (XmlElement Пункт в ItemsNode.SelectNodes(“RS:Дата / г:строки”, NameSpaceMgr))
{
data.DataRow NewRow = result.NewRow();
Еогеасп (result.Columns data.DataColumn Col)
{
если (Item.HasAttribute(“ows_” + (строка)DisplayNames[col.ColumnName]))
{
Строка значения = Item.GetAttribute(“ows_” + (строка)DisplayNames[col.ColumnName]);
если (CheckLookup.IsMatch((строка)выборы))
{
Строка valString = значение как String;
valString.Substring выбор =(valString.IndexOf(“#”) + 1);
}
// Назначение строку в поле, что ожидает номера или
// DateTime значения будут неявно конвертировать их
NewRow[с] = Выбор;
}
}
result.Rows.Add(NewRow);
}
Возвращаемый результат;
}
// Эта функция используется для получения имен
частных статических _nsmgr XmlNamespaceManager;
частных статических XmlNamespaceManager NameSpaceMgr
{
получить
{
если (_nsmgr == NULL)
{
_nsmgr = новый XmlNamespaceManager(новые NameTable());
_nsmgr.AddNamespace(“WSS”, “HTTP://schemas.microsoft.com / SharePoint / SOAP /”);
_nsmgr.AddNamespace(“с”, “UUID:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882”);
_nsmgr.AddNamespace(“DT”, “UUID:C2F41010-65B3-11D1-A29F-00AA00C14882”);
_nsmgr.AddNamespace(“RS”, “урна:Схемы-Microsoft-COM:строк”);
_nsmgr.AddNamespace(“из”, “#RowsetSchema”);
}
возвращение _nsmgr;
}
}
личного типа TypeFromField(XmlElement поле)
{
переключатель (field.GetAttribute(“Тип”))
{
случае “DateTime”:
возвращение TypeOf(DateTime);
случае “Целое число”:
возвращение TypeOf(Int);
случае “Количество”:
возвращение TypeOf(поплавок);
по умолчанию:
возвращение TypeOf(строка);
}
}
WssSite объекта на этот код, Я получаю ошибку на этой, “Вы пропускаете директиву или ссылки на сборку?” Любая идея,
Привет Бала,
WssSite является WebReference для lists.asmx
Ура,
Удай
Отлично. Благодаря Удай. Ваше сообщение спасло меня много времени в моей миграции проекте 🙂
Вы можете Джая