Ajouter la référence Web à l'Lists.asmx dans le site SharePoint.
http://localhost / _vti_bin / Lists.asmx
(SharePoint URL du répertoire virtuel / _vti_bin / Lists.asmx
écrire les méthodes suivantes en respectant votre webservice.
privé GetDataTableFromWSS data.DataTable(onlySchema bool)
{
chaîne WssSiteUrl = http://192.168.111.21;
chaîne WssSiteUrl = ConfigurationSettings.AppSettings[“WssSiteUrl”];
WssSite.Lists listes WssSite.Lists = new();
lists.Url = WssSiteUrl + “_vti_bin / Lists.asmx”;
lists.Credentials = System.Net.CredentialCache.DefaultCredentials;
lists.PreAuthenticate = true;
//vous devez passer le nom de la liste ici
CommandText = chaîne “Employé Info”;
XmlNode ListCollectionNode = lists.GetListCollection();
Liste XmlElement = (XmlElement)ListCollectionNode.SelectSingleNode(String.Format(“wss:Liste[Titre @ = "{0}»]”, CommandText), NameSpaceMgr);
si (Liste == null)
{
lancer de nouveaux ArgumentException(String.Format(“La liste {0} n'a pu être trouvée dans le site {1}”, CommandText, WssSiteUrl));
}
chaîne TechListName = List.GetAttribute(“Nom”);
résultat data.DataTable = new data.DataTable(“liste”);
noeud XmlNode lists.GetList = listinfo(TechListName);
fieldRefs System.Text.StringBuilder = new System.Text.StringBuilder();
DisplayNames System.Collections.Hashtable = new System.Collections.Hashtable();
foreach (Domaine XmlElement dans ListInfoNode.SelectNodes(“wss:Domaines / wss:Field”, NameSpaceMgr))
{
si (Field.HasChildNodes)
{
foreach (XmlElement Fld dans Field.SelectNodes(“wss:Domaines / wss:Field”, NameSpaceMgr))
{
chaîne FieldName = Fld.GetAttribute(“Nom”);
chaîne FieldDisplayName = Fld.GetAttribute(“DisplayName”);
si (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + FieldName + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(Field));
fieldRefs.AppendFormat(“”, FieldName);
DisplayNames.Add(FieldDisplayName, FieldName);
}
}
d'autre
{
chaîne FieldName = Field.GetAttribute(“Nom”);
chaîne FieldDisplayName = Field.GetAttribute(“DisplayName”);
si (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + FieldName + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(Field));
fieldRefs.AppendFormat(“”, FieldName);
DisplayNames.Add(FieldDisplayName, FieldName);
}
}
si (onlySchema) résultat de retour;
champs XmlElement = ListInfoNode.OwnerDocument.CreateElement(“ViewFields”);
fields.InnerXml = fieldRefs.ToString();
XmlNode ItemsNode = lists.GetListItems(TechListName, “”, null, champs, “1000000”, null);
// champs de recherche toujours commencer par l'ID numérique, puis ;# et puis la représentation de chaîne.
// Nous sommes normalement uniquement intéressé par le nom, si nous ôtons à l'ID.
System.Text.RegularExpressions.Regex CheckLookup = System.Text.RegularExpressions.Regex nouvelles(“^d ;#”);
foreach (Point XmlElement dans ItemsNode.SelectNodes(“rs:date / z:rangée”, NameSpaceMgr))
{
data.DataRow newRow = result.NewRow();
foreach (result.Columns col data.DataColumn)
{
si (Item.HasAttribute(“ows_” + (chaîne)DisplayNames[col.ColumnName]))
{
val = chaîne Item.GetAttribute(“ows_” + (chaîne)DisplayNames[col.ColumnName]);
si (CheckLookup.IsMatch((chaîne)élection))
{
valString string = val comme String;
choix = valString.Substring(valString.IndexOf(“#”) + 1);
}
// Attribution d'une chaîne à un champ qui attend des chiffres ou des
// valeurs datetime implicitement les convertir
newRow[avec] = Choix;
}
}
result.Rows.Add(newRow);
}
résultat de retour;
}
// La fonction suivante est utilisée pour obtenir des espaces de noms
privé _nsmgr XmlNamespaceManager statique;
private static XmlNamespaceManager NameSpaceMgr
{
obtenir
{
si (_nsmgr == null)
{
_nsmgr = new XmlNamespaceManager(nouvelle NameTable());
_nsmgr.AddNamespace(“wss”, “http://schemas.microsoft.com / sharepoint / savon /”);
_nsmgr.AddNamespace(“avec”, “uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882”);
_nsmgr.AddNamespace(“dt”, “uuid:C2F41010-65B3-11d1-A29F-00AA00C14882”);
_nsmgr.AddNamespace(“rs”, “urne:schemas-microsoft-com:ensemble de lignes”);
_nsmgr.AddNamespace(“des”, “#RowsetSchema”);
}
_nsmgr retour;
}
}
Type privé TypeFromField(domaine XmlElement)
{
commutateur (field.GetAttribute(“Type”))
{
cas “DateTime”:
retour typeof(DateTime);
cas “Entier”:
retour typeof(int);
cas “Nombre”:
retour typeof(flotteur);
par défaut:
retour typeof(chaîne);
}
}