Afegiu el Webreference a la Lists.asmx en lloc de SharePoint.
http://localhost / _vti_bin / Lists.asmx
(SharePoint virtuals URL Directori / _vti_bin / Lists.asmx
escriure els següents mètodes en el seu servei web.
privat GetDataTableFromWSS data.DataTable(bool onlySchema)
{
cadena WssSiteUrl = http://192.168.111.21;
cadena WssSiteUrl = ConfigurationSettings.AppSettings[“WssSiteUrl”];
WssSite.Lists llistes = WssSite.Lists nou();
lists.Url = WssSiteUrl + “_vti_bin / Lists.asmx”;
lists.Credentials = System.Net.CredentialCache.DefaultCredentials;
lists.PreAuthenticate = true;
//vostè ha de passar el nom de la llista aquí
cadena CommandText = “Informació de l'empleat”;
XmlNode = ListCollectionNode lists.GetListCollection();
XmlElement llista = (XmlElement)ListCollectionNode.SelectSingleNode(String.Format(“WSS:Llista[@ Title = '{0}’]”, CommandText), NameSpaceMgr);
si (Llista == null)
{
llançar nous ArgumentException(String.Format(“La llista {0} No es pot trobar al lloc {1}”, CommandText, WssSiteUrl));
}
TechListName cadena = List.GetAttribute(“Nom”);
data.DataTable resultat = new data.DataTable(“llista”);
Node XmlNode = listinfo lists.GetList(TechListName);
FieldRefs System.Text.StringBuilder = new System.Text.StringBuilder();
DisplayNames System.Collections.Hashtable = System.Collections.Hashtable nou();
foreach (XmlElement de camp en ListInfoNode.SelectNodes(“WSS:Camps / WSS:Camp”, NameSpaceMgr))
{
si (Field.HasChildNodes)
{
foreach (XmlElement Fld en Field.SelectNodes(“WSS:Camps / WSS:Camp”, NameSpaceMgr))
{
FieldName cadena = Fld.GetAttribute(“Nom”);
FieldDisplayName cadena = Fld.GetAttribute(“DisplayName”);
si (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + FieldName + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(Camp));
fieldRefs.AppendFormat(“”, FieldName);
DisplayNames.Add(FieldDisplayName, FieldName);
}
}
més
{
FieldName cadena = Field.GetAttribute(“Nom”);
FieldDisplayName cadena = Field.GetAttribute(“DisplayName”);
si (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + FieldName + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(Camp));
fieldRefs.AppendFormat(“”, FieldName);
DisplayNames.Add(FieldDisplayName, FieldName);
}
}
si (onlySchema) return resultat;
Camps XmlElement = ListInfoNode.OwnerDocument.CreateElement(“ViewFields”);
fields.InnerXml = fieldRefs.ToString();
XmlNode = ItemsNode lists.GetListItems(TechListName, “”, nul, camps, “1000000”, nul);
// Els camps de recerca sempre comença amb l'identificador numèric, llavors ;# i la representació de cadena.
// Estem normalment només està interessat en el nom, per la qual cosa tira de la ID.
CheckLookup System.Text.RegularExpressions.Regex = new System.Text.RegularExpressions.Regex(“^ D ;#”);
foreach (XmlElement article en ItemsNode.SelectNodes(“rs:data / z:fila”, NameSpaceMgr))
{
data.DataRow newRow = 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)elecció))
{
cadena valString = val com String;
= Elecció valString.Substring(valString.IndexOf(“#”) + 1);
}
// Assignant una cadena a un camp que espera que els números o
// Els valors de data i hora implícitament convertir
newRow[amb] = Elecció;
}
}
result.Rows.Add(newRow);
}
return resultat;
}
// La següent funció es fa servir per obtenir espais de noms
_nsmgr privat XmlNamespaceManager estàtica;
NameSpaceMgr privat XmlNamespaceManager estàtica
{
obtenir
{
si (_nsmgr == null)
{
_nsmgr = new XmlNamespaceManager(nova NameTable());
_nsmgr.AddNamespace(“WSS”, “http://schemas.microsoft.com / sharepoint / sabó /”);
_nsmgr.AddNamespace(“amb”, “uuid:BDC6E3F0-6DA3-11D1-A2A3-00AA00C14882”);
_nsmgr.AddNamespace(“dt”, “uuid:C2F41010-65B3-11D1-A29F-00AA00C14882”);
_nsmgr.AddNamespace(“rs”, “urna:schemas-microsoft-com:conjunt de files”);
_nsmgr.AddNamespace(“de”, “#RowsetSchema”);
}
tornar _nsmgr;
}
}
privat TypeFromField Tipus(XmlElement camp)
{
interruptor (field.GetAttribute(“Tipus”))
{
cas “Datetime”:
tornar typeof(Datetime);
cas “Sencer”:
tornar typeof(int);
cas “Número”:
tornar typeof(flotador);
defecte:
tornar typeof(cadena);
}
}
WssSite objecte d'aquest codi, M'estic fent en aquest error, “es troba a faltar una directiva using o una referència d'acoblament?” qualsevol idea
Hola Bala,
WssSite és un Webreference per al lists.asmx
Aplaudiments,
Uday
Excel lent. Gràcies Uday. Your post saved me lot of time in my migration project 🙂
Vostè és benvingut Jaya