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를 반환(문자열);
}
}
이 코드에 WssSite 개체, 이에 오류가 나타납니다, “당신은 using 지시문 또는 어셈블리 참조가 누락되었습니다?” 생각
안녕 Bala,
WssSite는 lists.asmx에 대한 Webreference입니다
건배,
Uday
우수한. 고마워요 Uday. Your post saved me lot of time in my migration project 🙂
천만에 자야 아르