Lägg till webreference till Lists.asmx i SharePoint-webbplatsen.
http://localhost / _vti_bin / Lists.asmx
(SharePoint virtuell katalog URL / _vti_bin / Lists.asmx
skriver följande metoder i din webbtjänst.
privata data.DataTable GetDataTableFromWSS(BOOL onlySchema)
{
sträng WssSiteUrl = http://192.168.111.21;
sträng WssSiteUrl = ConfigurationSettings.AppSettings[“WssSiteUrl”];
WssSite.Lists listor = new WssSite.Lists();
lists.Url = WssSiteUrl + “_vti_bin / Lists.asmx”;
lists.Credentials = System.Net.CredentialCache.DefaultCredentials;
lists.PreAuthenticate = true;
//du måste passera listnamnet här
sträng CommandText = “Anställd Info”;
XMLNode = ListCollectionNode lists.GetListCollection();
XmlElement List = (XmlElement)ListCollectionNode.SelectSingleNode(String.Format(“WSS:Lista[@ Title = '{0}"]”, CommandText), NameSpaceMgr);
om (Lista == null)
{
kasta nytt ArgumentException(String.Format(“Listan {0} kunde inte hittas på webbplatsen {1}”, CommandText, WssSiteUrl));
}
sträng TechListName = List.GetAttribute(“Namn”);
data.DataTable result = nya data.DataTable(“lista”);
XMLNode nod = listinfo lists.GetList(TechListName);
System.Text.StringBuilder fieldRefs = new System.Text.StringBuilder();
System.Collections.Hashtable DisplayNames = new System.Collections.Hashtable();
foreach (XmlElement Field i ListInfoNode.SelectNodes(“WSS:Fält / WSS:Fält”, NameSpaceMgr))
{
om (Field.HasChildNodes)
{
foreach (XmlElement Fld i Field.SelectNodes(“WSS:Fält / WSS:Fält”, NameSpaceMgr))
{
sträng FieldName = Fld.GetAttribute(“Namn”);
sträng FieldDisplayName = Fld.GetAttribute(“DisplayName”);
om (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + FieldName + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(Fält));
fieldRefs.AppendFormat(“”, FieldName);
DisplayNames.Add(FieldDisplayName, FieldName);
}
}
annat
{
sträng FieldName = Field.GetAttribute(“Namn”);
sträng FieldDisplayName = Field.GetAttribute(“DisplayName”);
om (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + FieldName + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(Fält));
fieldRefs.AppendFormat(“”, FieldName);
DisplayNames.Add(FieldDisplayName, FieldName);
}
}
om (onlySchema) tillbaka resultat;
XmlElement fält = ListInfoNode.OwnerDocument.CreateElement(“ViewFields”);
fields.InnerXml = fieldRefs.ToString();
XMLNode = ItemsNode lists.GetListItems(TechListName, “”, null, fält, “1000000”, null);
// Uppslagsfält börjar alltid med de numeriska ID, sedan ;# och sedan strängrepresentation.
// Vi är normalt bara intresserad av namn, så vi band ID.
System.Text.RegularExpressions.Regex CheckLookup = new System.Text.RegularExpressions.Regex(“^ D ;#”);
foreach (XmlElement objekt i ItemsNode.SelectNodes(“RS:datum / z:rad”, NameSpaceMgr))
{
data.DataRow newRow = result.NewRow();
foreach (data.DataColumn col result.Columns)
{
om (Item.HasAttribute(“ows_” + (sträng)DisplayNames[col.ColumnName]))
{
sträng val = Item.GetAttribute(“ows_” + (sträng)DisplayNames[col.ColumnName]);
om (CheckLookup.IsMatch((sträng)val))
{
sträng valString = val som String;
val = valString.Substring(valString.IndexOf(“#”) + 1);
}
// Tilldela ett sträng till ett fält som förväntar sig siffror eller
// datetime värden kommer implicit konvertera dem
newRow[med] = val;
}
}
result.Rows.Add(newRow);
}
tillbaka resultat;
}
// Följande funktion används för att få Namnutrymmen
privata statisk XmlNamespaceManager _nsmgr;
privata statisk XmlNamespaceManager NameSpaceMgr
{
får
{
om (_nsmgr == null)
{
_nsmgr = new XmlNamespaceManager(nya NameTable());
_nsmgr.AddNamespace(“WSS”, “http://schemas.microsoft.com / SharePoint / tvål /”);
_nsmgr.AddNamespace(“med”, “uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882”);
_nsmgr.AddNamespace(“dt”, “uuid:C2F41010-65B3-11D1-A29F-00AA00C14882”);
_nsmgr.AddNamespace(“RS”, “urn:schemas-microsoft-com:rowset”);
_nsmgr.AddNamespace(“av”, “#RowsetSchema”);
}
tillbaka _nsmgr;
}
}
privata Typ TypeFromField(XmlElement fält)
{
brytare (field.GetAttribute(“Typ”))
{
fall “DateTime”:
tillbaka typeof(DateTime);
fall “Integer”:
tillbaka typeof(int);
fall “Antal”:
tillbaka typeof(flyta);
standard:
tillbaka typeof(sträng);
}
}
WssSite objekt på denna kod, Jag får felmeddelande om detta, “du saknar en med direktiv eller en församling referens?” någon idé
Hej Bala,
WssSite är en Webreference för lists.asmx
Skål,
Uday
Utmärkt. Tack Uday. Your post saved me lot of time in my migration project 🙂
Du är välkommen Jaya