SharePointサイトにLists.asmxにWebReferenceのを追加します。.
のhttp://localhostの/ _vti_bin / Lists.asmx
(SharePointの仮想ディレクトリのURL / _vti_bin / Lists.asmx
あなたのWebサービスで次のメソッドを書く.
プライベートdata.DataTable GetDataTableFromWSS(ブール値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 =真;
//あなたはここにリスト名を渡す必要があります
文字列を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のノード=リスト案内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))
{
文字列フィールド名= Fld.GetAttribute(“名”);
文字列FieldDisplayName = Fld.GetAttribute(“表示名”);
ば (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + フィールド名 + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(のフィールド));
fieldRefs.AppendFormat(“”, フィールド名);
DisplayNames.Add(FieldDisplayName, フィールド名);
}
}
他
{
文字列フィールド名= Field.GetAttribute(“名”);
文字列FieldDisplayName = Field.GetAttribute(“表示名”);
ば (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, “”, 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 COL result.Columns)
{
ば (Item.HasAttribute(“ows_” + (文字列)DisplayNames[col.ColumnName]))
{
文字列ヴァル= Item.GetAttribute(“ows_” + (文字列)DisplayNames[col.ColumnName]);
ば (CheckLookup.IsMatch((文字列)選挙))
{
文字列として文字列valString =ヴァル;
選択= valString.Substring(valString.IndexOf(“#”) + 1);
}
// または数字を期待しているフィールドに文字列を割り当てる
// datetime値は、それらを暗黙的に変換します。
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を返す(int型);
の場合 “数”:
typeofを返す(フロート);
デフォルトの:
typeofを返す(文字列);
}
}