เพิ่ม webreference เพื่อ Lists.asmx ในไซต์ SharePoint.
http://localhost / _vti_bin / Lists.asmx
(SharePoint URL ของไดเรกทอรีเสมือน / _vti_bin / Lists.asmx
เขียนวิธีการดังต่อไปนี้ในเว็บเซอร์ของคุณ.
ส่วนตัว GetDataTableFromWSS data.DataTable(bool onlySchema)
{
สตริง = HTTP WssSiteUrl://192.168.111.21;
สตริง WssSiteUrl = ConfigurationSettings.AppSettings[“WssSiteUrl”];
WssSite.Lists = WssSite.Lists รายการใหม่();
WssSiteUrl lists.Url = + “_vti_bin / Lists.asmx”;
lists.Credentials System.Net.CredentialCache.DefaultCredentials =;
lists.PreAuthenticate = จริง;
//คุณต้องผ่านชื่อรายการที่นี่
CommandText = สตริง “ข้อมูลพนักงาน”;
XmlNode = lists.GetListCollection ListCollectionNode();
รายชื่อ XmlElement = (XmlElement)ListCollectionNode.SelectSingleNode(String.Format(“WSS:รายการ[หัวข้อ @ ='{0}']”, CommandText), NameSpaceMgr);
ถ้า (รายชื่อ == null)
{
โยน ArgumentException ใหม่(String.Format(“รายการที่ {0} ไม่พบในเว็บไซต์ {1}”, CommandText, WssSiteUrl));
}
TechListName สตริง List.GetAttribute =(“ชื่อ”);
ผล data.DataTable = data.DataTable ใหม่(“รายการ”);
โหนด XmlNode lists.GetList listinfo =(TechListName);
System.Text.StringBuilder fieldRefs = System.Text.StringBuilder ใหม่();
DisplayNames System.Collections.Hashtable = System.Collections.Hashtable ใหม่();
foreach (เขต XmlElement ใน ListInfoNode.SelectNodes(“WSS:เขต / WSS:เขตข้อมูล”, NameSpaceMgr))
{
ถ้า (Field.HasChildNodes)
{
foreach (fld XmlElement ใน Field.SelectNodes(“WSS:เขต / WSS:เขตข้อมูล”, NameSpaceMgr))
{
FieldName สตริง Fld.GetAttribute =(“ชื่อ”);
FieldDisplayName สตริง Fld.GetAttribute =(“DisplayName”);
ถ้า (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + FieldName + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(เขตข้อมูล));
fieldRefs.AppendFormat(“”, FieldName);
DisplayNames.Add(FieldDisplayName, FieldName);
}
}
อื่น
{
FieldName สตริง Field.GetAttribute =(“ชื่อ”);
string FieldDisplayName = Field.GetAttribute(“DisplayName”);
ถ้า (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + FieldName + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(เขตข้อมูล));
fieldRefs.AppendFormat(“”, FieldName);
DisplayNames.Add(FieldDisplayName, FieldName);
}
}
ถ้า (onlySchema) return result;
XmlElement fields = ListInfoNode.OwnerDocument.CreateElement(“ViewFields”);
fields.InnerXml = fieldRefs.ToString();
XmlNode = lists.GetListItems ItemsNode(TechListName, “”, โมฆะ, เขตข้อมูล, “1000000”, โมฆะ);
// Lookup fields always start with the numeric ID, then ;# and then the string representation.
// We are normally only interested in the name, so we strip the ID.
System.Text.RegularExpressions.Regex CheckLookup = new System.Text.RegularExpressions.Regex(“^\d ;#”);
foreach (XmlElement Item in ItemsNode.SelectNodes(“rs:data/z:row”, NameSpaceMgr))
{
data.DataRow newRow = result.NewRow();
foreach (data.DataColumn col in result.Columns)
{
ถ้า (Item.HasAttribute(“ows_” + (เชือก)DisplayNames[col.ColumnName]))
{
string val = Item.GetAttribute(“ows_” + (เชือก)DisplayNames[col.ColumnName]);
ถ้า (CheckLookup.IsMatch((เชือก)val))
{
string valString = val as String;
val = valString.Substring(valString.IndexOf(“#”) + 1);
}
// Assigning a string to a field that expects numbers or
// datetime values will implicitly convert them
newRow[col] = val;
}
}
result.Rows.Add(newRow);
}
return result;
}
// The following Function is used to Get Namespaces
private static XmlNamespaceManager _nsmgr;
private static XmlNamespaceManager NameSpaceMgr
{
get
{
ถ้า (_nsmgr == null)
{
_nsmgr = new XmlNamespaceManager(new 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(“rs”, “urn:schemas-microsoft-com:rowset”);
_nsmgr.AddNamespace(“z”, “#RowsetSchema”);
}
return _nsmgr;
}
}
private Type TypeFromField(XmlElement field)
{
switch (field.GetAttribute(“Type”))
{
case “DateTime”:
return typeof(DateTime);
case “Integer”:
return typeof(int);
case “Number”:
return typeof(float);
default:
return 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
ไชโย,
Uday
Excellent. Thanks Uday. Your post saved me lot of time in my migration project 🙂
You are welcome Jaya