Dodajte webreference na Lists.asmx na mestu SharePoint.
http://localhost / _vti_bin / Lists.asmx
(SharePoint virtualni imenik URL / _vti_bin / Lists.asmx
napisati naslednje metode v vašem WebService.
zasebno data.DataTable GetDataTableFromWSS(bool onlySchema)
{
Niz WssSiteUrl = http://192.168.111.21;
Niz WssSiteUrl = ConfigurationSettings.AppSettings[“WssSiteUrl”];
WssSite.Lists seznami = novi WssSite.Lists();
lists.Url = WssSiteUrl + “_vti_bin / Lists.asmx”;
lists.Credentials = System.Net.CredentialCache.DefaultCredentials;
lists.PreAuthenticate = true;
//moraš opraviti Seznam Ime tukaj
Niz CommandText = “Zaposleni Info”;
XmlNode = ListCollectionNode lists.GetListCollection();
Seznam XmlElement = (XmlElement)ListCollectionNode.SelectSingleNode(String.Format(“WSS:Seznam[@ Naslov = "{0}"]”, CommandText), NameSpaceMgr);
če (Seznam == null)
{
vrgel novo ArgumentException(String.Format(“Seznam {0} ni bilo mogoče najti v mestu {1}”, CommandText, WssSiteUrl));
}
Niz TechListName = List.GetAttribute(“Ime”);
data.DataTable rezultat = new data.DataTable(“Seznam”);
XmlNode ListInfoNode = lists.GetList(TechListName);
FieldRefs System.Text.StringBuilder = new System.Text.StringBuilder();
System.Collections.Hashtable DisplayNames = new System.Collections.Hashtable();
foreach (XmlElement Polje v ListInfoNode.SelectNodes(“WSS:Polj / WSS:Polje”, NameSpaceMgr))
{
če (Field.HasChildNodes)
{
foreach (XmlElement FLD v Field.SelectNodes(“WSS:Polj / WSS:Polje”, NameSpaceMgr))
{
Niz FieldName = Fld.GetAttribute(“Ime”);
Niz FieldDisplayName = Fld.GetAttribute(“DisplayName”);
če (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + FieldName + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(Polje));
fieldRefs.AppendFormat(“”, FieldName);
DisplayNames.Add(FieldDisplayName, FieldName);
}
}
drugega
{
Niz FieldName = Field.GetAttribute(“Ime”);
Niz FieldDisplayName = Field.GetAttribute(“DisplayName”);
če (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + FieldName + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(Polje));
fieldRefs.AppendFormat(“”, FieldName);
DisplayNames.Add(FieldDisplayName, FieldName);
}
}
če (onlySchema) vrne rezultat;
XmlElement polja = ListInfoNode.OwnerDocument.CreateElement(“ViewFields”);
fields.InnerXml = fieldRefs.ToString();
XmlNode ItemsNode = lists.GetListItems(TechListName, “”, nič, polja, “1000000”, nič);
// Lookup področja se vedno začne s številčno ID, Nato ;# nato pa niz predstavitev.
// Mi smo ponavadi zanima samo ime, zato smo strip ID.
System.Text.RegularExpressions.Regex CheckLookup = new System.Text.RegularExpressions.Regex(“^ D ;#”);
foreach (XmlElement točka v ItemsNode.SelectNodes(“rs:Datum / z:vrstica”, NameSpaceMgr))
{
data.DataRow newRow = result.NewRow();
foreach (data.DataColumn kotiček v result.Columns)
{
če (Item.HasAttribute(“ows_” + (string)DisplayNames[col.ColumnName]))
{
Niz val = Item.GetAttribute(“ows_” + (string)DisplayNames[col.ColumnName]);
če (CheckLookup.IsMatch((string)val))
{
niz = valString izbira String;
val = valString.Substring(valString.IndexOf(“#”) + 1);
}
// Dodeljevanje niz na polja, ki pričakuje, številke ali
// Čas pomnilnika vrednosti bo implicitno jih spremenijo
newRow[s] = Val;
}
}
result.Rows.Add(newRow);
}
vrne rezultat;
}
// Naslednja funkcija se uporablja za Get Imenski prostori
zasebnega statični XmlNamespaceManager _nsmgr;
zasebnega statični XmlNamespaceManager NameSpaceMgr
{
dobili
{
če (_nsmgr == null)
{
_nsmgr = new XmlNamespaceManager(Nova NameTable());
_nsmgr.AddNamespace(“WSS”, “http://schemas.microsoft.com / SharePoint / milo /”);
_nsmgr.AddNamespace(“z”, “UUID:BDC6E3F0-6DA3-11D1-A2A3-00AA00C14882”);
_nsmgr.AddNamespace(“dt”, “UUID:C2F41010-65B3-11D1-A29F-00AA00C14882”);
_nsmgr.AddNamespace(“rs”, “žaro:sheme-microsoft-com:niza vrstic”);
_nsmgr.AddNamespace(“od”, “#RowsetSchema”);
}
vrnitev _nsmgr;
}
}
zasebno Vrsta TypeFromField(XmlElement polje)
{
vklopite (field.GetAttribute(“Tip”))
{
primeru “DateTime”:
vrnitev vrste uporabljene(DateTime);
primeru “Celo število”:
vrnitev vrste uporabljene(int);
primeru “Število”:
vrnitev vrste uporabljene(float);
Privzeto:
vrnitev vrste uporabljene(string);
}
}
WssSite object on this code, I am getting error on this, “you are missing a using directive or an assembly reference?” any idea
Hi Bala,
WssSite is an Webreference for the lists.asmx
Cheers,
Uday
Excellent. Thanks Uday. Your post saved me lot of time in my migration project 🙂
You are welcome Jaya