Voeg de WebReference aan de Lists.asmx in SharePoint-site.
http://localhost / _vti_bin / Lists.asmx
(SharePoint virtuele map URL / _vti_bin / Lists.asmx
Schrijf de volgende methoden in uw webservice.
particuliere data.DataTable GetDataTableFromWSS(bool onlySchema)
{
string WssSiteUrl = http://192.168.111.21;
string WssSiteUrl = ConfigurationSettings.AppSettings[“WssSiteUrl”];
WssSite.Lists lijsten = nieuwe WssSite.Lists();
lists.Url = WssSiteUrl + “_vti_bin / Lists.asmx”;
lists.Credentials = System.Net.CredentialCache.DefaultCredentials;
lists.PreAuthenticate = true;
//je moet de lijstnaam hier voorbij
string CommandText = “Werknemer Info”;
XmlNode ListCollectionNode = lists.GetListCollection();
XmlElement List = (XmlElement)ListCollectionNode.SelectSingleNode(String.Format(“WSS:Lijst[@ Title = '{0}']”, CommandText), NameSpaceMgr);
als (Lijst == null)
{
throw new ArgumentException(String.Format(“De lijst {0} kon niet worden gevonden op de site {1}”, CommandText, WssSiteUrl));
}
string TechListName = List.GetAttribute(“Naam”);
data.DataTable resultaat = nieuwe data.DataTable(“lijst”);
XmlNode ListInfoNode = lists.GetList(TechListName);
System.Text.StringBuilder fieldRefs = nieuwe System.Text.StringBuilder();
System.Collections.Hashtable displaynamen = nieuwe System.Collections.Hashtable();
foreach (XmlElement Veld in ListInfoNode.SelectNodes(“WSS:Velden / WSS:Gebied”, NameSpaceMgr))
{
als (Field.HasChildNodes)
{
foreach (XmlElement Fld in Field.SelectNodes(“WSS:Velden / WSS:Gebied”, NameSpaceMgr))
{
string Veldnaam = Fld.GetAttribute(“Naam”);
string FieldDisplayName = Fld.GetAttribute(“DisplayName”);
als (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + Veldnaam + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(Gebied));
fieldRefs.AppendFormat(“”, Veldnaam);
DisplayNames.Add(FieldDisplayName, Veldnaam);
}
}
anders
{
string Veldnaam = Field.GetAttribute(“Naam”);
string FieldDisplayName = Field.GetAttribute(“DisplayName”);
als (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + Veldnaam + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(Gebied));
fieldRefs.AppendFormat(“”, Veldnaam);
DisplayNames.Add(FieldDisplayName, Veldnaam);
}
}
als (onlySchema) rendement leiden;
XmlElement velden = ListInfoNode.OwnerDocument.CreateElement(“ViewFields”);
fields.InnerXml = fieldRefs.ToString();
XmlNode ItemsNode = lists.GetListItems(TechListName, “”, nietig, velden, “1000000”, nietig);
// Opzoekvelden beginnen altijd met de numerieke ID, dan ;# en vervolgens de string representatie.
// We zijn normaal gesproken alleen geïnteresseerd in de naam, zodat we met het strippen van de ID.
System.Text.RegularExpressions.Regex CheckLookup = nieuwe System.Text.RegularExpressions.Regex(“^ D ;#”);
foreach (XmlElement item in ItemsNode.SelectNodes(“rs:datum / z:rij”, NameSpaceMgr))
{
data.DataRow newRow = result.NewRow();
foreach (data.DataColumn col result.Columns)
{
als (Item.HasAttribute(“ows_” + (string)Displaynamen[col.ColumnName]))
{
string val = Item.GetAttribute(“ows_” + (string)Displaynamen[col.ColumnName]);
als (CheckLookup.IsMatch((string)verkiezingen))
{
string valString = val als String;
keuze = valString.Substring(valString.IndexOf(“#”) + 1);
}
// Toewijzen van een string naar een veld dat getallen of verwacht
// datetime waarden impliciet converteren
newRow[met] = Keuze;
}
}
result.Rows.Add(newRow);
}
rendement leiden;
}
// De volgende functie wordt gebruikt om Naamruimten Get
private static XmlNamespaceManager _nsmgr;
private static XmlNamespaceManager NameSpaceMgr
{
te krijgen
{
als (_nsmgr == null)
{
_nsmgr = nieuwe XmlNamespaceManager(nieuwe NameTable());
_nsmgr.AddNamespace(“WSS”, “http://schemas.microsoft.com / sharepoint / soap /”);
_nsmgr.AddNamespace(“met”, “uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882”);
_nsmgr.AddNamespace(“dt”, “uuid:C2F41010-65B3-11D1-A29F-00AA00C14882”);
_nsmgr.AddNamespace(“rs”, “urn:schema's-microsoft-com:rijenset”);
_nsmgr.AddNamespace(“van”, “#RowsetSchema”);
}
terug _nsmgr;
}
}
particuliere Type TypeFromField(XmlElement gebied)
{
schakelaar (field.GetAttribute(“Type”))
{
geval “DateTime”:
terug typeof(DateTime);
geval “Geheel getal”:
terug typeof(int);
geval “Aantal”:
terug typeof(zweven);
Standaard:
terug typeof(string);
}
}
WssSite object op deze code, Ik krijg fout op deze, “je mist een met behulp van de richtlijn of een samenstel verwijzing?” enig idee
Hi Bala,
WssSite is een WebReference voor de lists.asmx
Proost,
Uday
Uitstekende. Dankzij Uday. Your post saved me lot of time in my migration project 🙂
U bent van harte welkom Jaya