إضافة إلى 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(سلسلة);
}
}
WssSite object on this code, I am getting error on this, “you are missing a using directive or an assembly reference?” any idea
Hi Bala,
WssSite is an Webreference for the lists.asmx
هتاف,
عدي
Excellent. Thanks Uday. Your post saved me lot of time in my migration project 🙂
You are welcome Jaya