Retreiving Lista Innehåll via WebService i SharePoint 2003

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);
}
}

4 kommentarer till Retreiving Lista Innehåll via WebService i SharePoint 2003

Lämna ett svar

Du kan använda dessa HTML-taggar

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>