Додадете webreference на Lists.asmx во SharePoint сајт.
http://localhost / _vti_bin / Lists.asmx
(SharePoint виртуелен директориум URL / _vti_bin / Lists.asmx
пишува следниве методи во вашиот WebService.
приватни data.DataTable GetDataTableFromWSS(bool onlySchema)
{
низа WssSiteUrl = http://192.168.111.21;
низа WssSiteUrl = ConfigurationSettings.AppSettings[“WssSiteUrl”];
WssSite.Lists листи = new 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);
ако (Листа == нула)
{
фрли нова ArgumentException(String.Format(“На листата {0} не може да се најде во сајт {1}”, CommandText, WssSiteUrl));
}
низа TechListName = List.GetAttribute(“Името”);
data.DataTable резултат = new data.DataTable(“листа”);
XmlNode ListInfoNode = lists.GetList(TechListName);
System.Text.StringBuilder fieldRefs = new System.Text.StringBuilder();
System.Collections.Hashtable DisplayNames = new System.Collections.Hashtable();
foreach (XmlElement поле во ListInfoNode.SelectNodes(“WSS:Полињата / WSS:Поле”, NameSpaceMgr))
{
ако (Field.HasChildNodes)
{
foreach (XmlElement FLD во Field.SelectNodes(“WSS:Полињата / WSS:Поле”, NameSpaceMgr))
{
стринг = fieldname Fld.GetAttribute(“Името”);
стринг = FieldDisplayName Fld.GetAttribute(“Именаекран”);
ако (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(“Именаекран”);
ако (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”, нула);
// Пребарување полиња секогаш ќе започне со проект нумерички, тогаш ;# а потоа стринг застапеност.
// Ние сме нормално се заинтересирани само за името, па ние му се одземе на проект.
System.Text.RegularExpressions.Regex CheckLookup = new System.Text.RegularExpressions.Regex(“^ Д ;#”);
foreach (XmlElement точка во ItemsNode.SelectNodes(“РС:податоци / Z:ред”, NameSpaceMgr))
{
data.DataRow newRow = result.NewRow();
foreach (data.DataColumn колекција во result.Columns)
{
ако (Item.HasAttribute(“ows_” + (низа)DisplayNames[col.ColumnName]))
{
низа Вал = Item.GetAttribute(“ows_” + (низа)DisplayNames[col.ColumnName]);
ако (CheckLookup.IsMatch((низа)часа))
{
низа valString = Вал како Стринг;
Вал = valString.Substring(valString.IndexOf(“#”) + 1);
}
// Доделување стринг во област која се очекува броеви или
// datetime вредности имплицитно ќе ги конвертирате
newRow[со] = H;
}
}
result.Rows.Add(newRow);
}
враќање резултат;
}
// Следните функција се користи за да добиете Именски простори
приватниот статички XmlNamespaceManager _nsmgr;
приватниот статички XmlNamespaceManager NameSpaceMgr
{
да се добие
{
ако (_nsmgr == нула)
{
_nsmgr = new 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(“РС”, “урната:шеми-Microsoft-COM:rowset”);
_nsmgr.AddNamespace(“од”, “#RowsetSchema”);
}
врати _nsmgr;
}
}
приватни Тип TypeFromField(XmlElement поле)
{
прекинувач (field.GetAttribute(“Тип”))
{
случај “DateTime”:
врати typeof(DateTime);
случај “Цел број”:
врати typeof(INT);
случај “Број”:
врати typeof(плови);
Стандардната:
врати typeof(низа);
}
}