Legg til WebReference til Lists.asmx i SharePoint-området.
http://localhost / _Vti_Bin / Lists.asmx
(SharePoint virtuelle Directory URL / _vti_bin / Lists.asmx
Skriv følgende metoder i WebService din.
private data.DataTable GetDataTableFromWSS(bool onlySchema)
{
string WssSiteUrl = http://192.168.111.21;
string WssSiteUrl = ConfigurationSettings.AppSettings[“WssSiteUrl”];
WssSite.Lists lister = nye WssSite.Lists();
lists.Url = WssSiteUrl + “_vti_bin / Lists.asmx”;
lists.Credentials = System.Net.CredentialCache.DefaultCredentials;
lists.PreAuthenticate = sant;
//you have to pass the List Name here
string CommandText = “Arbeidstaker Info”;
XmlNode ListCollectionNode = lists.GetListCollection();
XmlElement List = (XmlElement)ListCollectionNode.SelectSingleNode(String.Format(“wss:Liste[@ Tittel = '{0}']”, CommandText), NameSpaceMgr);
hvis (Liste == null)
{
kaste nytt ArgumentException(String.Format(“Listen {0} kunne ikke bli funnet i området {1}”, CommandText, WssSiteUrl));
}
string TechListName = List.GetAttribute(“Navn”);
data.DataTable resultat = nye data.DataTable(“liste”);
XmlNode node = listinfo lists.GetList(TechListName);
System.Text.StringBuilder fieldRefs = nye System.Text.StringBuilder();
System.Collections.Hashtable DisplayNames = nye System.Collections.Hashtable();
foreach (XmlElement Field i ListInfoNode.SelectNodes(“wss:Felt / WSS:Field”, NameSpaceMgr))
{
hvis (Field.HasChildNodes)
{
foreach (XmlElement Fld i Field.SelectNodes(“wss:Felt / WSS:Field”, NameSpaceMgr))
{
string fieldname = Fld.GetAttribute(“Navn”);
string FieldDisplayName = Fld.GetAttribute(“DisplayName”);
hvis (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + Fieldname + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(Field));
fieldRefs.AppendFormat(“”, Fieldname);
DisplayNames.Add(FieldDisplayName, Fieldname);
}
}
annet
{
string fieldname = Field.GetAttribute(“Navn”);
string FieldDisplayName = Field.GetAttribute(“DisplayName”);
hvis (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + Fieldname + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(Field));
fieldRefs.AppendFormat(“”, Fieldname);
DisplayNames.Add(FieldDisplayName, Fieldname);
}
}
hvis (onlySchema) avkastning resultat;
XmlElement felt = ListInfoNode.OwnerDocument.CreateElement(“ViewFields”);
fields.InnerXml = fieldRefs.ToString();
XmlNode ItemsNode = lists.GetListItems(TechListName, “”, null, felt, “1000000”, null);
// Oppslagsfelt alltid starte med de numeriske ID, da ;# og deretter strengen representasjon.
// Vi er normalt bare interessert i navnet, så vi stripe ID.
System.Text.RegularExpressions.Regex CheckLookup = nye System.Text.RegularExpressions.Regex(“^ D ;#”);
foreach (XmlElement element i ItemsNode.SelectNodes(“rs:dato / z:rad”, NameSpaceMgr))
{
data.DataRow newRow = result.NewRow();
foreach (data.DataColumn col result.Columns)
{
hvis (Item.HasAttribute(“ows_” + (streng)DisplayNames[col.ColumnName]))
{
string val = Item.GetAttribute(“ows_” + (streng)DisplayNames[col.ColumnName]);
hvis (CheckLookup.IsMatch((streng)valget))
{
string valString = val som String;
valg = valString.Substring(valString.IndexOf(“#”) + 1);
}
// Tilordne en streng til et felt som forventer tall eller
// datetime verdier vil implisitt konvertere dem
newRow[med] = Choice;
}
}
result.Rows.Add(newRow);
}
avkastning resultat;
}
// Følgende Funksjonen brukes til å få navnerom
private statisk XmlNamespaceManager _nsmgr;
private statisk XmlNamespaceManager NameSpaceMgr
{
får
{
hvis (_nsmgr == null)
{
_nsmgr = nye XmlNamespaceManager(nye NameTable());
_nsmgr.AddNamespace(“wss”, “http://schemas.microsoft.com/sharepoint/soap/”);
_nsmgr.AddNamespace(“med”, “uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882”);
_nsmgr.AddNamespace(“dt”, “uuid:C2F41010-65B3-11d1-A29F-00AA00C14882”);
_nsmgr.AddNamespace(“rs”, “urne:skjemaer-microsoft-com:rowset”);
_nsmgr.AddNamespace(“av”, “#RowsetSchema”);
}
avkastning _nsmgr;
}
}
private Type TypeFromField(XmlElement feltet)
{
bryteren (field.GetAttribute(“Type”))
{
saken “Brennvidde”:
avkastning typeof(Brennvidde);
saken “Integer”:
avkastning typeof(int);
saken “Nummer”:
avkastning typeof(float);
standard:
avkastning typeof(streng);
}
}