إضافة إلى webreference Lists.asmx في موقع SharePoint.
المتشعب://كلهوست / _vti_bin / Lists.asmx
(شير الدليل الظاهري عنوان / _vti_bin / Lists.asmx
الكتابة الطرق التالية في خدمة ويب الخاص بك.
خاصة 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:قائمة[@ عنوان = '{0}"]”, CommandText), NameSpaceMgr);
إذا (قائمة == لاغية)
{
رمي 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 للمجلد في Field.SelectNodes(“WSS:الحقول / WSS:حقل”, NameSpaceMgr))
{
سلسلة = FIELDNAME Fld.GetAttribute(“اسم”);
سلسلة = FieldDisplayName Fld.GetAttribute(“اسم العرض”);
إذا (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(“اسم العرض”);
إذا (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, “”, باطل, الحقول, “1000000”, باطل);
// حقول بحث تبدأ دائما مع معرف رقمي, ثم ;# ومن ثم تمثيل سلسلة.
// نحن عادة مهتم فقط في اسم, لذلك نحن تجريد ID.
System.Text.RegularExpressions.Regex CheckLookup = 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 = فال مثل String;
فال = valString.Substring(valString.IndexOf(“#”) + 1);
}
// تعيين السلسلة إلى الحقل الذي تتوقع أرقام أو
// قيم التاريخ والوقت سيتم تحويل ضمنا لهم
newRow[مع] = H;
}
}
result.Rows.Add(newRow);
}
نتيجة عودة;
}
// يتم استخدام الدالة التالية للحصول على مساحات الأسماء
انفراد ثابت XmlNamespaceManager _nsmgr;
انفراد ثابت XmlNamespaceManager NameSpaceMgr
{
الحصول على
{
إذا (_nsmgr == لاغية)
{
_nsmgr = XmlNamespaceManager جديد(الجديد NameTable());
_nsmgr.AddNamespace(“WSS”, “المتشعب://schemas.microsoft.com/sharepoint/soap/”);
_nsmgr.AddNamespace(“مع”, “UUID:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882”);
_nsmgr.AddNamespace(“دينارا”, “UUID:C2F41010-65B3-11d1-A29F-00AA00C14882”);
_nsmgr.AddNamespace(“RS”, “جرة تحفظ رماد الوتى:مخططات، مايكروسوفت كوم:الصفوف”);
_nsmgr.AddNamespace(“من”, “#RowsetSchema”);
}
العودة _nsmgr;
}
}
نوع TypeFromField الخاص(الحقل XmlElement)
{
تحول (field.GetAttribute(“نوع”))
{
حالة “التاريخ والوقت”:
العودة تشير typeof(التاريخ والوقت);
حالة “عدد صحيح”:
العودة تشير typeof(كثافة العمليات);
حالة “عدد”:
العودة تشير typeof(عوامة);
الافتراضي:
العودة تشير typeof(سلسلة);
}
}