添加webreference在SharePoint網站 Lists.asmx.
銈://本地主機 / _vti_bin / Lists.asmx
(SharePoint虛擬目錄 URL / _vti_bin / Lists.asmx
寫在你的web服務下面的方法.
私人data.DataTable GetDataTableFromWSS(BOOL onlySchema)
{
字符串WssSiteUrl = HTTP://192.168.111.21;
字符串WssSiteUrl = ConfigurationSettings.AppSettings[“WssSiteUrl”];
WssSite.Lists列表=新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);
如果 (列表== NULL)
{
拋出新的ArgumentException(String.Format(“該列表 {0} 不能在現場發現 {1}”, 的CommandText, WssSiteUrl));
}
字符串TechListName = List.GetAttribute(“名稱”);
data.DataTable結果 =新data.DataTable(“列表”);
XmlNode的ListInfoNode = lists.GetList(TechListName);
System.Text.StringBuilder fieldRefs =新System.Text.StringBuilder();
System.Collections.Hashtable DisplayNames =新System.Collections.Hashtable();
的foreach (在ListInfoNode.SelectNodes的XmlElement場(“WSS:字段/ WSS:現場”, NameSpaceMgr))
{
如果 (Field.HasChildNodes)
{
的foreach (在Field.SelectNodes的XmlElement FLD(“WSS:字段/ WSS:現場”, NameSpaceMgr))
{
字符串的FieldName = Fld.GetAttribute(“名稱”);
字符串FieldDisplayName = Fld.GetAttribute(“DisplayName的”);
如果 (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + 字段名 + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(現場));
fieldRefs.AppendFormat(“”, 字段名);
DisplayNames.Add(FieldDisplayName, 字段名);
}
}
其他
{
字符串的FieldName = Field.GetAttribute(“名稱”);
字符串FieldDisplayName = Field.GetAttribute(“DisplayName的”);
如果 (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + 字段名 + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(現場));
fieldRefs.AppendFormat(“”, 字段名);
DisplayNames.Add(FieldDisplayName, 字段名);
}
}
如果 (onlySchema) 返回結果;
XmlElement的領域 = ListInfoNode.OwnerDocument.CreateElement(“ViewFields”);
fields.InnerXml = fieldRefs.ToString();
XmlNode的ItemsNode = lists.GetListItems(TechListName, “”, 為零, 字段, “1000000”, 為零);
// 查閱字段總是與數字 ID開始, 然後 ;# 然後字符串表示.
// 我們通常只在名稱感興趣, 因此,我們剝離的ID.
System.Text.RegularExpressions.Regex CheckLookup =新System.Text.RegularExpressions.Regex(“^ D ;#”);
的foreach (在ItemsNode.SelectNodes的XmlElement項目(“RS:日期/ S:行”, NameSpaceMgr))
{
data.DataRow的NewRow = result.NewRow();
的foreach (在result.Columns山坳data.DataColumn)
{
如果 (Item.HasAttribute(“ows_” + (串)DisplayNames[col.ColumnName]))
{
字符串值= Item.GetAttribute(“ows_” + (串)DisplayNames[col.ColumnName]);
如果 (CheckLookup.IsMatch((串)VAL))
{
字符串作為 String = valString選擇;
VAL = valString.Substring(valString.IndexOf(“#”) + 1);
}
// 分配一個領域,預計數字或字符串
// datetime值將隱式轉換
的NewRow[與] =瓦爾;
}
}
result.Rows.Add(的NewRow);
}
返回結果;
}
// 下面的函數是用來獲取命名空間
私人靜態的XmlNamespaceManager _nsmgr;
私人靜態的XmlNamespaceManager NameSpaceMgr
{
獲得
{
如果 (_nsmgr == NULL)
{
_nsmgr =新的XmlNamespaceManager(新名稱表());
_nsmgr.AddNamespace(“WSS”, “銈://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”, “甕:架構 - 微軟 COM:行集”);
_nsmgr.AddNamespace(“對”, “#RowsetSchema”);
}
返回_nsmgr;
}
}
私人類型 TypeFromField(XmlElement的領域)
{
切換 (field.GetAttribute(“類型”))
{
案例 “的DateTime”:
返回typeof運算(的DateTime);
案例 “整數”:
返回typeof運算(詮釋);
案例 “數”:
返回typeof運算(浮動);
默認:
返回typeof運算(串);
}
}
在此代碼WssSite對象, 我得到這個錯誤, “你缺少using指令或程序集引用?” 任何想法
您好巴拉,
WssSite是為lists.asmx Webreference
乾杯,
烏代
優秀. 感謝烏代. 您的帖子為我的遷移項目節省了很多時間🙂
你是歡迎亞