Дадаць да WebReference Lists.asmx на сайце SharePoint.
HTTP://лакальны / _vti_bin / Lists.asmx
(URL віртуальны даведнік SharePoint / _vti_bin / Lists.asmx
напісаць наступныя метады ў вашым вэб-сэрвісу.
прыватны data.DataTable GetDataTableFromWSS(Ьоо onlySchema)
{
Радок WssSiteUrl = HTTP://192.168.111.21;
Радок WssSiteUrl = ConfigurationSettings.AppSettings[“WssSiteUrl”];
WssSite.Lists спісы = новы WssSite.Lists();
lists.Url = WssSiteUrl + “_vti_bin / Lists.asmx”;
lists.Credentials = System.Net.CredentialCache.DefaultCredentials;
lists.PreAuthenticate = TRUE;
//вы павінны прайсці спісу імёнаў тут
Радок CommandText = “Супрацоўнік інфармацыя”;
XmlNode ListCollectionNode = lists.GetListCollection();
XmlElement List = (XmlElement)ListCollectionNode.SelectSingleNode(String.Format(“WSS:Спіс[@ Title = "{0}"]”, CommandText), NameSpaceMgr);
калі (Спіс == NULL)
{
праліць новае ArgumentException(String.Format(“Спіс {0} не можа быць знойдзены на сайце {1}”, CommandText, WssSiteUrl));
}
Радок TechListName = List.GetAttribute(“Назва”);
data.DataTable вынік = новы data.DataTable(“спіс”);
XmlNode ListInfoNode = lists.GetList(TechListName);
System.Text.StringBuilder fieldRefs = новы System.Text.StringBuilder();
System.Collections.Hashtable DisplayNames = новы System.Collections.Hashtable();
Еогеасп (XmlElement поле ў ListInfoNode.SelectNodes(“WSS:Поля / WSS:Поле”, NameSpaceMgr))
{
калі (Field.HasChildNodes)
{
Еогеасп (XMLElement Fld ў Field.SelectNodes(“WSS:Поля / WSS:Поле”, NameSpaceMgr))
{
String = FIELDNAME Fld.GetAttribute(“Назва”);
String = FieldDisplayName Fld.GetAttribute(“Адлюстроўваецца імя”);
калі (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + FieldName + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(Поле));
fieldRefs.AppendFormat(“”, FieldName);
DisplayNames.Add(FieldDisplayName, FieldName);
}
}
яшчэ
{
string FieldName = Field.GetAttribute(“Назва”);
string FieldDisplayName = Field.GetAttribute(“Адлюстроўваецца імя”);
калі (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + FieldName + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(Поле));
fieldRefs.AppendFormat(“”, FieldName);
DisplayNames.Add(FieldDisplayName, FieldName);
}
}
калі (onlySchema) return result;
XmlElement fields = ListInfoNode.OwnerDocument.CreateElement(“ViewFields”);
fields.InnerXml = fieldRefs.ToString();
XmlNode ItemsNode = lists.GetListItems(TechListName, “”, null, палёў, “1000000”, null);
// Lookup fields always start with the numeric ID, then ;# and then the string representation.
// We are normally only interested in the name, so we strip the ID.
System.Text.RegularExpressions.Regex CheckLookup = new System.Text.RegularExpressions.Regex(“^\d ;#”);
Еогеасп (XmlElement Item in ItemsNode.SelectNodes(“rs:data/z:row”, NameSpaceMgr))
{
data.DataRow newRow = result.NewRow();
Еогеасп (data.DataColumn col in result.Columns)
{
калі (Item.HasAttribute(“ows_” + (радок)DisplayNames[col.ColumnName]))
{
string val = Item.GetAttribute(“ows_” + (радок)DisplayNames[col.ColumnName]);
калі (CheckLookup.IsMatch((радок)val))
{
string valString = val as String;
val = valString.Substring(valString.IndexOf(“#”) + 1);
}
// Assigning a string to a field that expects numbers or
// datetime values will implicitly convert them
newRow[col] = val;
}
}
result.Rows.Add(newRow);
}
return result;
}
// The following Function is used to Get Namespaces
private static XmlNamespaceManager _nsmgr;
private static XmlNamespaceManager NameSpaceMgr
{
get
{
калі (_nsmgr == null)
{
_nsmgr = new XmlNamespaceManager(new NameTable());
_nsmgr.AddNamespace(“WSS”, “HTTP://schemas.microsoft.com/sharepoint/soap/”);
_nsmgr.AddNamespace(“з”, “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(“z”, “#RowsetSchema”);
}
return _nsmgr;
}
}
private Type TypeFromField(XmlElement field)
{
switch (field.GetAttribute(“Type”))
{
case “DateTime”:
return typeof(DateTime);
case “Integer”:
return typeof(int);
case “Number”:
return typeof(float);
дэфолт:
return typeof(радок);
}
}