הוסף webreference כדי Lists.asmx באתר SharePoint.
http://localhost / _vti_bin / Lists.asmx
(SharePoint וירטואלי מדריך 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 = נכון;
//אתה צריך להעביר את שם רשימת כאן
מחרוזת 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();
DisplayNames System.Collections.Hashtable = חדש System.Collections.Hashtable();
foreach (XmlElement שדה ListInfoNode.SelectNodes(“WSS:שדות / WSS:שדה”, NameSpaceMgr))
{
אם (Field.HasChildNodes)
{
foreach (XmlElement FLD ב 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(“שם”);
מחרוזת 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(“לשדות התצוגה”);
fields.InnerXml = fieldRefs.ToString();
XmlNode ItemsNode = lists.GetListItems(TechListName, “”, אפס, שדות, “1000000”, אפס);
// בדיקת שדות תמיד להתחיל עם מספרי זיהוי, אז ;# ואז ייצוג מחרוזת.
// אנחנו בדרך כלל מעוניינים רק שם, אז אנחנו להתפשט מזהה.
CheckLookup System.Text.RegularExpressions.Regex = חדש System.Text.RegularExpressions.Regex(“^ D ;#”);
foreach (XmlElement פריט ItemsNode.SelectNodes(“RS:נתונים / ת:שורה”, 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 / SharePoint / סבון /”);
_nsmgr.AddNamespace(“עם”, “uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882”);
_nsmgr.AddNamespace(“DT”, “uuid:C2F41010-65B3-11d1-A29F-00AA00C14882”);
_nsmgr.AddNamespace(“RS”, “מיחם:סכמות של Microsoft-com:rowset”);
_nsmgr.AddNamespace(“של”, “#RowsetSchema”);
}
לחזור _nsmgr;
}
}
סוג פרטית TypeFromField(XmlElement בתחום)
{
להחליף (field.GetAttribute(“סוג”))
{
מקרה “DateTime”:
לחזור typeof(DateTime);
מקרה “מספר שלם”:
לחזור typeof(int);
מקרה “מספר”:
לחזור typeof(לצוף);
ברירת מחדל:
לחזור typeof(מיתר);
}
}