Lägg till webreference till Lists.asmx i SharePoint-webbplatsen.
http://localhost / _vti_bin / Lists.asmx
(SharePoint virtuell katalog URL / _vti_bin / Lists.asmx
skriver följande metoder i din webbtjänst.
privata data.DataTable GetDataTableFromWSS(BOOL onlySchema)
{
sträng WssSiteUrl = http://192.168.111.21;
sträng WssSiteUrl = ConfigurationSettings.AppSettings[“WssSiteUrl”];
WssSite.Lists listor = new WssSite.Lists();
lists.Url = WssSiteUrl + “_vti_bin / Lists.asmx”;
lists.Credentials = System.Net.CredentialCache.DefaultCredentials;
lists.PreAuthenticate = true;
//du måste passera listnamnet här
sträng CommandText = “Anställd Info”;
XMLNode = ListCollectionNode lists.GetListCollection();
XmlElement List = (XmlElement)ListCollectionNode.SelectSingleNode(String.Format(“WSS:Lista[@ Title = '{0}"]”, CommandText), NameSpaceMgr);
om (Lista == null)
{
kasta nytt ArgumentException(String.Format(“Listan {0} kunde inte hittas på webbplatsen {1}”, CommandText, WssSiteUrl));
}
sträng TechListName = List.GetAttribute(“Namn”);
data.DataTable result = nya data.DataTable(“lista”);
XMLNode nod = listinfo lists.GetList(TechListName);
System.Text.StringBuilder fieldRefs = new System.Text.StringBuilder();
System.Collections.Hashtable DisplayNames = new System.Collections.Hashtable();
foreach (XmlElement Field i ListInfoNode.SelectNodes(“WSS:Fält / WSS:Fält”, NameSpaceMgr))
{
om (Field.HasChildNodes)
{
foreach (XmlElement Fld i Field.SelectNodes(“WSS:Fält / WSS:Fält”, NameSpaceMgr))
{
sträng FieldName = Fld.GetAttribute(“Namn”);
sträng FieldDisplayName = Fld.GetAttribute(“DisplayName”);
om (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + FieldName + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(Fält));
fieldRefs.AppendFormat(“”, FieldName);
DisplayNames.Add(FieldDisplayName, FieldName);
}
}
annat
{
sträng FieldName = Field.GetAttribute(“Namn”);
sträng FieldDisplayName = Field.GetAttribute(“DisplayName”);
om (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + FieldName + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(Fält));
fieldRefs.AppendFormat(“”, FieldName);
DisplayNames.Add(FieldDisplayName, FieldName);
}
}
om (onlySchema) tillbaka resultat;
XmlElement fält = ListInfoNode.OwnerDocument.CreateElement(“ViewFields”);
fields.InnerXml = fieldRefs.ToString();
XMLNode = ItemsNode lists.GetListItems(TechListName, “”, null, fält, “1000000”, null);
// Uppslagsfält börjar alltid med de numeriska ID, sedan ;# och sedan strängrepresentation.
// Vi är normalt bara intresserad av namn, så vi band ID.
System.Text.RegularExpressions.Regex CheckLookup = new System.Text.RegularExpressions.Regex(“^ D ;#”);
foreach (XmlElement objekt i ItemsNode.SelectNodes(“RS:datum / z:rad”, NameSpaceMgr))
{
data.DataRow newRow = result.NewRow();
foreach (data.DataColumn col result.Columns)
{
om (Item.HasAttribute(“ows_” + (sträng)DisplayNames[col.ColumnName]))
{
sträng val = Item.GetAttribute(“ows_” + (sträng)DisplayNames[col.ColumnName]);
om (CheckLookup.IsMatch((sträng)val))
{
sträng valString = val som String;
val = valString.Substring(valString.IndexOf(“#”) + 1);
}
// Tilldela ett sträng till ett fält som förväntar sig siffror eller
// datetime värden kommer implicit konvertera dem
newRow[med] = val;
}
}
result.Rows.Add(newRow);
}
tillbaka resultat;
}
// Följande funktion används för att få Namnutrymmen
privata statisk XmlNamespaceManager _nsmgr;
privata statisk XmlNamespaceManager NameSpaceMgr
{
får
{
om (_nsmgr == null)
{
_nsmgr = new XmlNamespaceManager(nya NameTable());
_nsmgr.AddNamespace(“WSS”, “http://schemas.microsoft.com / SharePoint / tvål /”);
_nsmgr.AddNamespace(“med”, “uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882”);
_nsmgr.AddNamespace(“dt”, “uuid:C2F41010-65B3-11D1-A29F-00AA00C14882”);
_nsmgr.AddNamespace(“RS”, “urn:schemas-microsoft-com:rowset”);
_nsmgr.AddNamespace(“av”, “#RowsetSchema”);
}
tillbaka _nsmgr;
}
}
privata Typ TypeFromField(XmlElement fält)
{
brytare (field.GetAttribute(“Typ”))
{
fall “DateTime”:
tillbaka typeof(DateTime);
fall “Integer”:
tillbaka typeof(int);
fall “Antal”:
tillbaka typeof(flyta);
standard:
tillbaka typeof(sträng);
}
}