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);
}
}
WssSite obxecto sobre este código, Estou recibindo erro nesta, “you are missing a using directive or an assembly reference?” any idea
Hi Bala,
WssSite is an Webreference for the lists.asmx
Saúde,
Uday
Excellent. Thanks Uday. Your post saved me lot of time in my migration project 🙂
You are welcome Jaya