Aggiungere il WebReference al Lists.asmx nel sito di SharePoint.
http://localhost / _vti_bin / Lists.asmx
(SharePoint directory virtuale URL / _vti_bin / Lists.asmx
scrivere i seguenti metodi a tua webservice.
privato GetDataTableFromWSS data.DataTable(onlySchema bool)
{
WssSiteUrl stringa = http://192.168.111.21;
stringa WssSiteUrl = ConfigurationSettings.AppSettings[“WssSiteUrl”];
WssSite.Lists liste WssSite.Lists = new();
lists.Url = WssSiteUrl + “_vti_bin / Lists.asmx”;
lists.Credentials = System.Net.CredentialCache.DefaultCredentials;
lists.PreAuthenticate = true;
//si deve passare il nome della lista qui
stringa CommandText = “Dipendente Info”;
XmlNode ListCollectionNode = lists.GetListCollection();
XmlElement List = (XmlElement)ListCollectionNode.SelectSingleNode(String.Format(“WSS:Lista[@ Title = '{0}']”, CommandText), NameSpaceMgr);
se (Lista == null)
{
gettare nuova ArgumentException(String.Format(“L'elenco {0} non è stato trovato nel sito {1}”, CommandText, WssSiteUrl));
}
stringa TechListName = List.GetAttribute(“Nome”);
risultato = new data.DataTable data.DataTable(“elenco”);
XmlNode nodo lists.GetList = listinfo(TechListName);
fieldRefs System.Text.StringBuilder = new System.Text.StringBuilder();
DisplayNames System.Collections.Hashtable = new System.Collections.Hashtable();
foreach (Campo XmlElement in ListInfoNode.SelectNodes(“WSS:Campi / WSS:Campo”, NameSpaceMgr))
{
se (Field.HasChildNodes)
{
foreach (XmlElement Fld in Field.SelectNodes(“WSS:Campi / WSS:Campo”, NameSpaceMgr))
{
stringa FieldName = Fld.GetAttribute(“Nome”);
stringa FieldDisplayName = Fld.GetAttribute(“DisplayName”);
se (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + FieldName + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(Campo));
fieldRefs.AppendFormat(“”, FieldName);
DisplayNames.Add(FieldDisplayName, FieldName);
}
}
altro
{
stringa FieldName = Field.GetAttribute(“Nome”);
stringa FieldDisplayName = Field.GetAttribute(“DisplayName”);
se (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + FieldName + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(Campo));
fieldRefs.AppendFormat(“”, FieldName);
DisplayNames.Add(FieldDisplayName, FieldName);
}
}
se (onlySchema) restituire il risultato;
campi XmlElement = ListInfoNode.OwnerDocument.CreateElement(“ViewFields”);
fields.InnerXml = fieldRefs.ToString();
XmlNode ItemsNode = lists.GetListItems(TechListName, “”, null, campi, “1000000”, null);
// campi di ricerca sempre iniziare con l'ID numerico, poi ;# e poi la stringa di rappresentanza.
// Ci sono normalmente interessati solo nel nome, così abbiamo striscia l'ID.
System.Text.RegularExpressions.Regex CheckLookup = System.Text.RegularExpressions.Regex nuovo(“^ D ;#”);
foreach (Luogo in cui si XmlElement in ItemsNode.SelectNodes(“rs:Data / z:fila”, NameSpaceMgr))
{
data.DataRow newRow = result.NewRow();
foreach (data.DataColumn col in result.Columns)
{
se (Item.HasAttribute(“ows_” + (stringa)DisplayNames[col.ColumnName]))
{
string val = Item.GetAttribute(“ows_” + (stringa)DisplayNames[col.ColumnName]);
se (CheckLookup.IsMatch((stringa)elezione))
{
string val valString = as String;
scelta = valString.Substring(valString.IndexOf(“#”) + 1);
}
// Assegnazione di una stringa in un campo che si aspetta numeri o
// valori datetime implicitamente li converte
newRow[col] = Scelta;
}
}
result.Rows.Add(newRow);
}
restituire il risultato;
}
// La seguente funzione viene utilizzata per ottenere spazi dei nomi
privato _nsmgr XmlNamespaceManager statica;
private static XmlNamespaceManager NameSpaceMgr
{
ottenere
{
se (_nsmgr == null)
{
_nsmgr = XmlNamespaceManager nuovo(nuovo 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-com:rowset”);
_nsmgr.AddNamespace(“di”, “#RowsetSchema”);
}
ritorno _nsmgr;
}
}
Private Tipo TypeFromField(XmlElement campo)
{
interruttore (field.GetAttribute(“Tipo”))
{
caso “DateTime”:
ritorno typeof(DateTime);
caso “Intero”:
ritorno typeof(int);
caso “Numero”:
ritorno typeof(galleggiante);
di default:
ritorno typeof(stringa);
}
}
oggetto WssSite su questo codice, Mi sto errore su questo, “ti manca una direttiva using o un riferimento a un assembly?” qualsiasi idea
Ciao a Bala,
WssSite è un WebReference per la lists.asmx
Evviva,
Uday
Eccellente. Grazie Uday. Your post saved me lot of time in my migration project 🙂
Sei il benvenuto Jaya