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);
}
}
WssSite Objekt auf diesen Code, Ich erhalte Fehler auf dieser, “Sie vermissen ein using-Direktive oder ein Assemblyverweis?” keine Ahnung
Hallo Bala,
WssSite ist ein WebReference für die Lists.asmx
Prost,
Uday
Ausgezeichnet. Dank Uday. Your post saved me lot of time in my migration project 🙂
Sie sind herzlich eingeladen Jaya