SharePoint 사이트에있는 Lists.asmx에 webreference 추가.
HTTP를://로컬 호스트 / _vti_bin / Lists.asmx
(셰어 포인트 가상 디렉터리의 URL / _vti_bin / Lists.asmx
귀하의 webservice에 다음과 같은 방법을 쓸.
개인 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:목록[@ 제목 = '{0}']”, CommandText), NameSpaceMgr);
면 (목록 == NULL)
{
새로운 ArgumentException 던져(String.Format(“목록 {0} 이 사이트에서 찾을 수 없습니다 {1}”, CommandText, WssSiteUrl));
}
문자열 TechListName은 = List.GetAttribute(“이름”);
data.DataTable 결과는 = 새로운 data.DataTable(“목록”);
XmlNode의 노드 = listinfo의 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 + ” (” + FieldName + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(분야));
fieldRefs.AppendFormat(“”, FieldName);
DisplayNames.Add(FieldDisplayName, FieldName);
}
}
다른
{
문자열 FieldName은 = Field.GetAttribute(“이름”);
문자열 FieldDisplayName은 = Field.GetAttribute(“DisplayName이”);
면 (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, “”, NULL, 분야, “1000000”, NULL);
// 조회 필드는 항상 숫자 ID로 시작, 그때 ;# 다음 문자열 표현.
// 우리는 일반적으로 단지 이름에 관심, 그래서 우리는 ID를 스트립.
System.Text.RegularExpressions.Regex의 CheckLookup는 = 새로운 System.Text.RegularExpressions.Regex(“^ D ;#”);
foreach (ItemsNode.SelectNodes에서 XmlElement 항목(“RS:날짜 / 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);
}
// 또는 숫자를 기대 필드에 문자열을 할당
// 날짜 _ 시간 값이 암시적으로 그들을 변환합니다
newRow[와] = 선택;
}
}
result.Rows.Add(newRow);
}
결과를 반환;
}
// 다음 함수는 네임 스페이스를 가져오기 위해 사용됩니다
개인 정적 XmlNamespaceManager를 _nsmgr;
개인 정적 XmlNamespaceManager를 NameSpaceMgr
{
타
{
면 (_nsmgr == NULL)
{
_nsmgr = 새로운 XmlNamespaceManager(새 NameTable());
_nsmgr.AddNamespace(“WSS”, “HTTP를://schemas.microsoft.com / 셰어 포인트 / 비누 /”);
_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(“유형”))
{
케이스 “날짜 _ 시간”:
typeof를 반환(날짜 _ 시간);
케이스 “정수”:
typeof를 반환(정수);
케이스 “번호”:
typeof를 반환(플로트);
기본:
typeof를 반환(문자열);
}
}