Adicione o WebReference ao Lists.asmx no site sharepoint.
http://localhost / _vti_bin / Lists.asmx
(SharePoint URL do diretório virtual / _vti_bin / Lists.asmx
escrever os métodos a seguir no seu webservice.
privada data.DataTable GetDataTableFromWSS(onlySchema bool)
{
cadeia WssSiteUrl = http://192.168.111.21;
cadeia WssSiteUrl = ConfigurationSettings.AppSettings[“WssSiteUrl”];
WssSite.Lists listas = WssSite.Lists nova();
lists.Url = WssSiteUrl + “_vti_bin / Lists.asmx”;
lists.Credentials = System.Net.CredentialCache.DefaultCredentials;
lists.PreAuthenticate = true;
//você tem que passar o nome da lista aqui
cadeia CommandText = “Informações empregado”;
XmlNode = lists.GetListCollection ListCollectionNode();
Lista XmlElement = (XmlElement)ListCollectionNode.SelectSingleNode(String.Format(“wss:Lista[@ Title = '{0}']”, CommandText), NameSpaceMgr);
se (Lista == null)
{
throw ArgumentException nova(String.Format(“A lista {0} não pôde ser encontrado no site {1}”, CommandText, WssSiteUrl));
}
TechListName cadeia List.GetAttribute =(“Nome”);
data.DataTable resultado = new data.DataTable(“lista”);
Nó XmlNode lists.GetList listinfo =(TechListName);
System.Text.StringBuilder FieldRefs = new System.Text.StringBuilder();
DisplayNames System.Collections.Hashtable System.Collections.Hashtable = new();
foreach (Campo XmlElement em ListInfoNode.SelectNodes(“wss:Campos / wss:Campo”, NameSpaceMgr))
{
se (Field.HasChildNodes)
{
foreach (Fld XmlElement em Field.SelectNodes(“wss:Campos / wss:Campo”, NameSpaceMgr))
{
FieldName cadeia Fld.GetAttribute =(“Nome”);
FieldDisplayName FieldDisplayName cadeia Fld.GetAttribute =(“DisplayName”);
se (result.Columns.Contains(FieldDisplayName FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + FieldName + “)”;
}
result.Columns.Add(FieldDisplayName FieldDisplayName, TypeFromField(Campo));
fieldRefs.AppendFormat(“”, FieldName);
DisplayNames.Add(FieldDisplayName FieldDisplayName, FieldName);
}
}
mais
{
FieldName cadeia Field.GetAttribute =(“Nome”);
FieldDisplayName FieldDisplayName cadeia Field.GetAttribute =(“DisplayName”);
se (result.Columns.Contains(FieldDisplayName FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + FieldName + “)”;
}
result.Columns.Add(FieldDisplayName FieldDisplayName, TypeFromField(Campo));
fieldRefs.AppendFormat(“”, FieldName);
DisplayNames.Add(FieldDisplayName FieldDisplayName, FieldName);
}
}
se (onlySchema) retornar resultado;
Campos XmlElement ListInfoNode.OwnerDocument.CreateElement =(“ViewFields”);
fields.InnerXml = fieldRefs.ToString();
XmlNode = ItemsNode lists.GetListItems(TechListName, “”, nulo, campos, “1000000”, nulo);
// Campos de pesquisa sempre começam com a identificação numérica, então ;# e, em seguida, a representação de string.
// Estamos normalmente interessados apenas em nome, por isso tira o ID.
CheckLookup System.Text.RegularExpressions.Regex = new System.Text.RegularExpressions.Regex(“^ D ;#”);
foreach (Item XmlElement em ItemsNode.SelectNodes(“rs:Data / z:linha”, NameSpaceMgr))
{
data.DataRow newRow = result.NewRow();
foreach (result.Columns data.DataColumn col)
{
se (Item.HasAttribute(“ows_” + (string)DisplayNames[col.ColumnName]))
{
cadeia val Item.GetAttribute =(“ows_” + (string)DisplayNames[col.ColumnName]);
se (CheckLookup.IsMatch((string)eleição))
{
cadeia valString = val como String;
escolha valString.Substring =(valString.IndexOf(“#”) + 1);
}
// Atribuir uma string para um campo que espera números ou
// valores datetime implicitamente convertê-los
newRow[com] Escolha =;
}
}
result.Rows.Add(newRow);
}
retornar resultado;
}
// A função a seguir é usado para obter Namespaces
_nsmgr XmlNamespaceManager private static;
NameSpaceMgr XmlNamespaceManager private static
{
obter
{
se (_nsmgr == null)
{
_nsmgr = new XmlNamespaceManager(nova NameTable());
_nsmgr.AddNamespace(“wss”, “http://schemas.microsoft.com / sharepoint / sabão /”);
_nsmgr.AddNamespace(“com”, “uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882”);
_nsmgr.AddNamespace(“dt”, “uuid:C2F41010-65B3-11D1-A29F-00AA00C14882”);
_nsmgr.AddNamespace(“rs”, “urna:schemas-microsoft-com:conjunto de linhas”);
_nsmgr.AddNamespace(“de”, “#RowsetSchema”);
}
retorno _nsmgr;
}
}
Tipo privada TypeFromField(Campo XmlElement)
{
interruptor (field.GetAttribute(“Tipo”))
{
caso “DateTime”:
retorno typeof(DateTime);
caso “Número inteiro”:
retorno typeof(int);
caso “Número”:
retorno typeof(flutuar);
padrão:
retorno typeof(string);
}
}