Agregue el WebReference a la Lists.asmx en el sitio de SharePoint.
http://localhost / _vti_bin / Lists.asmx
(SharePoint URL del directorio virtual / _vti_bin / Lists.asmx
escribir los siguientes métodos en su servicio web.
privado GetDataTableFromWSS data.DataTable(onlySchema bool)
{
cadena WssSiteUrl = http://192.168.111.21;
cadena WssSiteUrl = ConfigurationSettings.AppSettings[“WssSiteUrl”];
WssSite.Lists listas WssSite.Lists = new();
lists.Url = WssSiteUrl + “_vti_bin / Lists.asmx”;
lists.Credentials = System.Net.CredentialCache.DefaultCredentials;
lists.PreAuthenticate = true;
//usted tiene que pasar el nombre de la lista aquí
CommandText = cadena “Información del Empleado”;
XmlNode ListCollectionNode = lists.GetListCollection();
XmlElement Lista = (XmlElement)ListCollectionNode.SelectSingleNode(String.Format(“wss:Lista[@ Título = '{0}']”, CommandText), NameSpaceMgr);
si (Lista == null)
{
lanzar nuevos ArgumentException(String.Format(“La lista {0} No se puede encontrar en el sitio {1}”, CommandText, WssSiteUrl));
}
cadena TechListName = List.GetAttribute(“Nombre”);
data.DataTable resultado = new data.DataTable(“lista”);
XmlNode nodo lists.GetList = listinfo(TechListName);
System.Text.StringBuilder FieldRefs = new System.Text.StringBuilder();
System.Collections.Hashtable DisplayNames = new System.Collections.Hashtable();
foreach (XmlElement campo en ListInfoNode.SelectNodes(“wss:Campos / wss:Campo”, NameSpaceMgr))
{
si (Field.HasChildNodes)
{
foreach (XmlElement Fld en Field.SelectNodes(“wss:Campos / wss:Campo”, NameSpaceMgr))
{
cadena FieldName = Fld.GetAttribute(“Nombre”);
cadena FieldDisplayName = Fld.GetAttribute(“DisplayName”);
si (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + FieldName + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(Campo));
fieldRefs.AppendFormat(“”, FieldName);
DisplayNames.Add(FieldDisplayName, FieldName);
}
}
más
{
cadena FieldName = Field.GetAttribute(“Nombre”);
cadena FieldDisplayName = Field.GetAttribute(“DisplayName”);
si (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + FieldName + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(Campo));
fieldRefs.AppendFormat(“”, FieldName);
DisplayNames.Add(FieldDisplayName, FieldName);
}
}
si (onlySchema) return resultado;
campos XmlElement = ListInfoNode.OwnerDocument.CreateElement(“ViewFields”);
fields.InnerXml = fieldRefs.ToString();
XmlNode ItemsNode = lists.GetListItems(TechListName, “”, nulo, campos, “1000000”, nulo);
// Los campos de búsqueda siempre comienza con el identificador numérico, a continuación, ;# y luego la cadena de representación.
// Nosotros, normalmente, sólo interesado en el nombre, por lo que tira de la ID.
System.Text.RegularExpressions.Regex CheckLookup System.Text.RegularExpressions.Regex = new(“^ D ;#”);
foreach (XmlElement artículo en ItemsNode.SelectNodes(“RS:fecha / z:fila”, NameSpaceMgr))
{
NewRow data.DataRow = result.NewRow();
foreach (result.Columns data.DataColumn col)
{
si (Item.HasAttribute(“ows_” + (cadena)DisplayNames[col.ColumnName]))
{
cadena de val = Item.GetAttribute(“ows_” + (cadena)DisplayNames[col.ColumnName]);
si (CheckLookup.IsMatch((cadena)elecciones))
{
valString cadena = val como String;
elección = valString.Substring(valString.IndexOf(“#”) + 1);
}
// Asignación de una cadena en un campo que espera que los números o
// los valores de fecha y hora implícitamente los convertirá
NewRow[con] = Selección;
}
}
result.Rows.Add(NewRow);
}
return resultado;
}
// La siguiente función se usa para obtener espacios de nombres
_nsmgr privado XmlNamespaceManager estática;
private static NameSpaceMgr XmlNamespaceManager
{
obtener
{
si (_nsmgr == null)
{
_nsmgr = XmlNamespaceManager nuevo(nueva NameTable());
_nsmgr.AddNamespace(“wss”, “http://schemas.microsoft.com / sharepoint / jabón /”);
_nsmgr.AddNamespace(“con”, “uuid:BDC6E3F0-6DA3-11D1-A2A3-00AA00C14882”);
_nsmgr.AddNamespace(“dt”, “uuid:C2F41010-65B3-11D1-A29F-00AA00C14882”);
_nsmgr.AddNamespace(“RS”, “urna:schemas-microsoft-com:conjunto de filas”);
_nsmgr.AddNamespace(“de”, “#RowsetSchema”);
}
volver _nsmgr;
}
}
privado TypeFromField Tipo(XmlElement campo)
{
interruptor (field.GetAttribute(“Tipo”))
{
caso “DateTime”:
volver typeof(DateTime);
caso “Entero”:
volver typeof(int);
caso “Número”:
volver typeof(flotador);
por defecto:
volver typeof(cadena);
}
}