Retreiving lista de contidos a través de WebService en SharePoint 2003

Engadir o webreference ao Lists.asmx na páxina web do SharePoint.

http://localhost / _vti_bin / Lists.asmx
(SharePoint URL directorio virtual / _vti_bin / Lists.asmx

escribir os seguintes métodos no seu webservice.

privado data.DataTable GetDataTableFromWSS(bool onlySchema)
{
corda WssSiteUrl = http://192.168.111.21;
corda WssSiteUrl = ConfigurationSettings.AppSettings[“WssSiteUrl”];
Listas WssSite.Lists = new WssSite.Lists();
lists.Url = WssSiteUrl + “_vti_bin / Lists.asmx”;
lists.Credentials = System.Net.CredentialCache.DefaultCredentials;

lists.PreAuthenticate = true;
//ten que pasar o nome da lista aquí
cadea CommandText = “Empregado Información”;
XmlNode ListCollectionNode = lists.GetListCollection();
XmlElement List = (XmlElement)ListCollectionNode.SelectSingleNode(String.Format(“WSS:Lista[@ Title = '{0}']”, CommandText), NameSpaceMgr);
se (Lista == null)
{
throw new ArgumentException(String.Format(“A lista {0} non se pode atopar no sitio {1}”, CommandText, WssSiteUrl));
}
cadea TechListName = List.GetAttribute(“Nome”);
resultado data.DataTable = new data.DataTable(“lista”);
XmlNode ListInfoNode = lists.GetList(TechListName);
System.Text.StringBuilder FieldRefs = new System.Text.StringBuilder();
DisplayNames System.Collections.Hashtable = new System.Collections.Hashtable();
foreach (XmlElement campo en ListInfoNode.SelectNodes(“WSS:Campos / WSS:Campo”, NameSpaceMgr))
{
se (Field.HasChildNodes)
{
foreach (XMLElement FLD en Field.SelectNodes(“WSS:Campos / WSS:Campo”, NameSpaceMgr))
{
string = FIELDNAME Fld.GetAttribute(“Nome”);
string = FieldDisplayName Fld.GetAttribute(“Nome de visualización”);
se (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + FieldName + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(Campo));
fieldRefs.AppendFormat(“”, FieldName);
DisplayNames.Add(FieldDisplayName, FieldName);
}
}
máis
{
cadea FieldName = Field.GetAttribute(“Nome”);
cadea FieldDisplayName = Field.GetAttribute(“Nome de visualización”);
se (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + FieldName + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(Campo));
fieldRefs.AppendFormat(“”, FieldName);
DisplayNames.Add(FieldDisplayName, FieldName);
}
}
se (onlySchema) resultado de retorno;
Campos XmlElement = ListInfoNode.OwnerDocument.CreateElement(“ViewFields”);
fields.InnerXml = fieldRefs.ToString();
XmlNode ItemsNode = lists.GetListItems(TechListName, “”, nulo, campos, “1000000”, nulo);
// Campos de investigación sempre comezan coa identificación numérica, logo ;# e, a continuación, a representación da cadea.
// Estamos interesados ​​normalmente só no nome, por iso, quita o ID.
System.Text.RegularExpressions.Regex CheckLookup = new System.Text.RegularExpressions.Regex(“^ D ;#”);

foreach (XmlElement elemento en ItemsNode.SelectNodes(“rs:datos / z:liña”, NameSpaceMgr))
{
data.DataRow newRow = result.NewRow();
foreach (data.DataColumn col en result.Columns)
{
se (Item.HasAttribute(“ows_” + (corda)DisplayNames[col.ColumnName]))
{
cadea val = Item.GetAttribute(“ows_” + (corda)DisplayNames[col.ColumnName]);
se (CheckLookup.IsMatch((corda)horas))
{
cadea valString = val as String;
val = valString.Substring(valString.IndexOf(“#”) + 1);
}
// Atribuíndo unha secuencia de caracteres para un campo que espera números ou
// valores datetime implicitamente convertela los
newRow[con] = H;
}
}
result.Rows.Add(newRow);
}
resultado de retorno;
}

// A seguinte función utilízase para obter Namespaces

_nsmgr XmlNamespaceManager private static;
private static XmlNamespaceManager NameSpaceMgr
{
obter
{
se (_nsmgr == null)
{
_nsmgr = new XmlNamespaceManager(nova NameTable());
_nsmgr.AddNamespace(“WSS”, “http://schemas.microsoft.com/sharepoint/soap/”);
_nsmgr.AddNamespace(“con”, “UUID:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882”);
_nsmgr.AddNamespace(“dt”, “UUID:C2F41010-65B3-11d1-A29F-00AA00C14882”);
_nsmgr.AddNamespace(“rs”, “urna:schemas-microsoft-con:conxunto de liñas”);
_nsmgr.AddNamespace(“a partir de”, “#RowsetSchema”);

}
volver _nsmgr;
}
}
Tipo TypeFromField privado(Campo XmlElement)
{
chave (field.GetAttribute(“Tipo”))
{
caso “DateTime”:
volver typeof(DateTime);
caso “Número enteiro”:
volver typeof(int);
caso “Número”:
volver typeof(flotador);
defecto:
volver typeof(corda);
}
}

4 comentarios a Lista Retreiving contido mediante WebService en SharePoint 2003

Deixe unha resposta

Pode usar estas etiquetas HTML

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>