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);
}
}
objet WssSite sur ce code, Je reçois erreur sur cette, “vous manque une directive using ou une référence d'assembly?” une idée
Salut Bala,
WssSite est une référence Web pour le Lists.asmx
Vive,
Uday
Excellent. Merci Uday. Your post saved me lot of time in my migration project 🙂
Vous êtes les bienvenus Jaya