Fügen Sie die WebReference die Lists.asmx in SharePoint-Website.
http://localhost / _vti_bin / Lists.asmx
(SharePoint virtuellen Verzeichnis-URL / _vti_bin / Lists.asmx
Schreiben Sie die folgenden Methoden in Ihren Webservice.
Private data.DataTable GetDataTableFromWSS(bool onlySchema)
{
String WssSiteUrl = http://192.168.111.21;
String WssSiteUrl = ConfigurationSettings.AppSettings[“WssSiteUrl”];
WssSite.Lists Listen = new WssSite.Lists();
lists.Url = WssSiteUrl + “_vti_bin / Lists.asmx”;
lists.Credentials = System.Net.CredentialCache.DefaultCredentials;
lists.PreAuthenticate = true;
//Sie müssen den Namen der Liste hier passieren
String CommandText = “Mitarbeiter Info”;
XmlNode ListCollectionNode = lists.GetListCollection();
XmlElement List = (XmlElement)ListCollectionNode.SelectSingleNode(String.Format(“WSS:Liste[@ Title = '{0}"]”, CommandText), NameSpaceMgr);
wenn (Liste == null)
{
throw new ArgumentException(String.Format(“Die Liste {0} konnte nicht in der Website gefunden werden {1}”, CommandText, WssSiteUrl));
}
String TechListName = List.GetAttribute(“Name”);
data.DataTable Ergebnis = new data.DataTable(“Liste”);
XmlNode node = listinfo lists.GetList(TechListName);
System.Text.StringBuilder fieldRefs = new System.Text.StringBuilder();
System.Collections.Hashtable DisplayNames = new System.Collections.Hashtable();
foreach (XmlElement Field in ListInfoNode.SelectNodes(“WSS:Fields / WSS:Field”, NameSpaceMgr))
{
wenn (Field.HasChildNodes)
{
foreach (XmlElement Fld in Field.SelectNodes(“WSS:Fields / WSS:Field”, NameSpaceMgr))
{
String FieldName = Fld.GetAttribute(“Name”);
String FieldDisplayName = Fld.GetAttribute(“DisplayName”);
wenn (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + FieldName + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(Field));
fieldRefs.AppendFormat(“”, FieldName);
DisplayNames.Add(FieldDisplayName, FieldName);
}
}
sonst
{
String FieldName = Field.GetAttribute(“Name”);
String FieldDisplayName = Field.GetAttribute(“DisplayName”);
wenn (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + FieldName + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(Field));
fieldRefs.AppendFormat(“”, FieldName);
DisplayNames.Add(FieldDisplayName, FieldName);
}
}
wenn (onlySchema) Rückkehr Ergebnis;
XmlElement Felder = ListInfoNode.OwnerDocument.CreateElement(“ViewFields”);
fields.InnerXml = fieldRefs.ToString();
XmlNode ItemsNode = lists.GetListItems(TechListName, “”, null, Felder, “1000000”, null);
// Lookup Felder immer mit der numerischen ID starten, dann ;# und dann die String-Darstellung.
// Wir sind in der Regel nur Namen interessiert, damit wir die Streifen ID.
System.Text.RegularExpressions.Regex CheckLookup = new System.Text.RegularExpressions.Regex(“^ D ;#”);
foreach (XmlElement Artikel in ItemsNode.SelectNodes(“rs:Datum / z:Zeile”, NameSpaceMgr))
{
data.DataRow newRow = result.NewRow();
foreach (data.DataColumn col result.Columns)
{
wenn (Item.HasAttribute(“ows_” + (String)DisplayNames[col.ColumnName]))
{
String val = Item.GetAttribute(“ows_” + (String)DisplayNames[col.ColumnName]);
wenn (CheckLookup.IsMatch((String)Wahl))
{
String valString = val als String;
Wahl = valString.Substring(valString.IndexOf(“#”) + 1);
}
// Zuweisen einer Zeichenfolge zu einem Feld, die Zahlen oder erwartet
// datetime-Werte werden implizit konvertieren
newRow[mit] = Wahl;
}
}
result.Rows.Add(newRow);
}
Rückkehr Ergebnis;
}
// Die folgende Funktion wird verwendet, um Namespaces Holen Sie sich
private static XmlNamespaceManager _nsmgr;
private static XmlNamespaceManager NameSpaceMgr
{
erhalten
{
wenn (_nsmgr == null)
{
_nsmgr = new XmlNamespaceManager(neue NameTable());
_nsmgr.AddNamespace(“WSS”, “http://schemas.microsoft.com / sharepoint / Seife /”);
_nsmgr.AddNamespace(“mit”, “uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882”);
_nsmgr.AddNamespace(“dt”, “uuid:C2F41010-65B3-11D1-A29F-00AA00C14882”);
_nsmgr.AddNamespace(“rs”, “Urne:schemas-microsoft-com:Rowset”);
_nsmgr.AddNamespace(“von”, “#RowsetSchema”);
}
Rückkehr _nsmgr;
}
}
Private Typ TypeFromField(XmlElement Feld)
{
Schalter (field.GetAttribute(“Typ”))
{
Fall “DateTime”:
Rückkehr typeof(DateTime);
Fall “Integer”:
Rückkehr typeof(int);
Fall “Anzahl”:
Rückkehr typeof(Schwimmer);
Standardmäßig:
Rückkehr typeof(String);
}
}