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);
}
}
WssSite objeto en el código, Estoy recibiendo un error en este, “le falta una directiva using o una referencia de ensamblado?” alguna idea
Hola Bala,
WssSite es un WebReference para el Lists.asmx
¡Salud,
Uday
Excelente. Gracias Uday. Your post saved me lot of time in my migration project 🙂
Usted es bienvenido Jaya