Додадете webreference на Lists.asmx во SharePoint сајт.
http://localhost / _vti_bin / Lists.asmx
(SharePoint виртуелен директориум URL / _vti_bin / Lists.asmx
пишува следниве методи во вашиот WebService.
приватни data.DataTable GetDataTableFromWSS(bool onlySchema)
{
низа WssSiteUrl = http://192.168.111.21;
низа WssSiteUrl = ConfigurationSettings.AppSettings[“WssSiteUrl”];
WssSite.Lists листи = new WssSite.Lists();
lists.Url = WssSiteUrl + “_vti_bin / Lists.asmx”;
lists.Credentials = System.Net.CredentialCache.DefaultCredentials;
lists.PreAuthenticate = true;
//ќе мора да помине Листа на Име овде
низа CommandText = “Вработен Информации”;
XmlNode ListCollectionNode = lists.GetListCollection();
XmlElement Листа = (XmlElement)ListCollectionNode.SelectSingleNode(String.Format(“WSS:Листа[@ Title = "{0}']”, CommandText), NameSpaceMgr);
ако (Листа == нула)
{
фрли нова ArgumentException(String.Format(“На листата {0} не може да се најде во сајт {1}”, CommandText, WssSiteUrl));
}
низа TechListName = List.GetAttribute(“Името”);
data.DataTable резултат = new data.DataTable(“листа”);
XmlNode ListInfoNode = lists.GetList(TechListName);
System.Text.StringBuilder fieldRefs = new System.Text.StringBuilder();
System.Collections.Hashtable DisplayNames = new System.Collections.Hashtable();
foreach (XmlElement поле во ListInfoNode.SelectNodes(“WSS:Полињата / WSS:Поле”, NameSpaceMgr))
{
ако (Field.HasChildNodes)
{
foreach (XmlElement FLD во Field.SelectNodes(“WSS:Полињата / WSS:Поле”, NameSpaceMgr))
{
стринг = fieldname Fld.GetAttribute(“Името”);
стринг = FieldDisplayName Fld.GetAttribute(“Именаекран”);
ако (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + Fieldname + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(Поле));
fieldRefs.AppendFormat(“”, Fieldname);
DisplayNames.Add(FieldDisplayName, Fieldname);
}
}
на друго место
{
низа fieldname = Field.GetAttribute(“Името”);
низа FieldDisplayName = Field.GetAttribute(“Именаекран”);
ако (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + Fieldname + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(Поле));
fieldRefs.AppendFormat(“”, Fieldname);
DisplayNames.Add(FieldDisplayName, Fieldname);
}
}
ако (onlySchema) враќање резултат;
XmlElement полиња = ListInfoNode.OwnerDocument.CreateElement(“ViewFields”);
fields.InnerXml = fieldRefs.ToString();
XmlNode ItemsNode = lists.GetListItems(TechListName, “”, нула, полиња, “1000000”, нула);
// Пребарување полиња секогаш ќе започне со проект нумерички, тогаш ;# а потоа стринг застапеност.
// Ние сме нормално се заинтересирани само за името, па ние му се одземе на проект.
System.Text.RegularExpressions.Regex CheckLookup = new System.Text.RegularExpressions.Regex(“^ Д ;#”);
foreach (XmlElement точка во ItemsNode.SelectNodes(“РС:податоци / Z:ред”, NameSpaceMgr))
{
data.DataRow newRow = result.NewRow();
foreach (data.DataColumn колекција во result.Columns)
{
ако (Item.HasAttribute(“ows_” + (низа)DisplayNames[col.ColumnName]))
{
низа Вал = Item.GetAttribute(“ows_” + (низа)DisplayNames[col.ColumnName]);
ако (CheckLookup.IsMatch((низа)часа))
{
низа valString = Вал како Стринг;
Вал = valString.Substring(valString.IndexOf(“#”) + 1);
}
// Доделување стринг во област која се очекува броеви или
// datetime вредности имплицитно ќе ги конвертирате
newRow[со] = H;
}
}
result.Rows.Add(newRow);
}
враќање резултат;
}
// Следните функција се користи за да добиете Именски простори
приватниот статички XmlNamespaceManager _nsmgr;
приватниот статички XmlNamespaceManager NameSpaceMgr
{
да се добие
{
ако (_nsmgr == нула)
{
_nsmgr = new XmlNamespaceManager(нови NameTable());
_nsmgr.AddNamespace(“WSS”, “http://schemas.microsoft.com/sharepoint/soap/”);
_nsmgr.AddNamespace(“со”, “UUID:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882”);
_nsmgr.AddNamespace(“dt”, “UUID:C2F41010-65B3-11d1-A29F-00AA00C14882”);
_nsmgr.AddNamespace(“РС”, “урната:шеми-Microsoft-COM:rowset”);
_nsmgr.AddNamespace(“од”, “#RowsetSchema”);
}
врати _nsmgr;
}
}
приватни Тип TypeFromField(XmlElement поле)
{
прекинувач (field.GetAttribute(“Тип”))
{
случај “DateTime”:
врати typeof(DateTime);
случај “Цел број”:
врати typeof(INT);
случај “Број”:
врати typeof(плови);
Стандардната:
врати typeof(низа);
}
}
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,
Удај
Excellent. Thanks Uday. Your post saved me lot of time in my migration project 🙂
You are welcome Jaya