اضافه کردن به webreference Lists.asmx به سایت شیرپوینت.
http://localhost / _vti_bin / Lists.asmx
(شیرپوینت مجازی فهرست آدرس ها / _vti_bin / Lists.asmx
نوشتن روش های زیر را در webservice شما.
خصوصی 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);
اگر (فهرست == تهی)
{
پرتاب ArgumentException جدید(String.Format(“فهرست {0} می تواند در سایت یافت نشد {1}”, CommandText, WssSiteUrl));
}
رشته TechListName = List.GetAttribute(“نام”);
نتیجه data.DataTable = جدید data.DataTable(“فهرست”);
گره XmlNode = listinfo lists.GetList(TechListName);
fieldRefs System.Text.StringBuilder = جدید 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(“ViewFields”);
fields.InnerXml = fieldRefs.ToString();
XmlNode ItemsNode = lists.GetListItems(TechListName, “”, تهی, زمینه, “1000000”, تهی);
// زمینه های گرین کارت آمریکا همیشه با شناسه عددی شروع, سپس ;# و پس از آن نمایش رشته.
// ما به طور معمول فقط در نام علاقه مند, تا آیدی ما نوار.
System.Text.RegularExpressions.Regex CheckLookup System.Text.RegularExpressions.Regex = جدید(“^ د;#”);
foreach (در مورد XmlElement ItemsNode.SelectNodes(“تومان:تاریخ / الف:ردیف”, 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);
}
نتیجه بازگشت;
}
// از تابع زیر استفاده می شود برای دریافت فضاهای نامی
خصوصی _nsmgr XmlNamespaceManager استاتیک;
خصوصی استاتیک XmlNamespaceManager NameSpaceMgr
{
دریافت
{
اگر (_nsmgr == تهی)
{
_nsmgr = جدید XmlNamespaceManager(جدید NameTable());
_nsmgr.AddNamespace(“wss”, “http://schemas.microsoft.com / شیرپوینت / صابون /”);
_nsmgr.AddNamespace(“با”, “UUID:BDC6E3F0 - 6DA3 - 11d1 - A2A3 - 00AA00C14882”);
_nsmgr.AddNamespace(“دردوران بارداری”, “UUID:C2F41010 - 65B3 - 11D1 - A29F-00AA00C14882”);
_nsmgr.AddNamespace(“تومان”, “کوزه:طرحواره - مایکروسافت کام:rowset”);
_nsmgr.AddNamespace(“از”, “#RowsetSchema”);
}
_nsmgr بازگشت;
}
}
خصوصی نوع TypeFromField(زمینه XmlElement)
{
گزینه (field.GetAttribute(“نوع”))
{
مورد “حسگر ناحیه رنگی یک”:
بازگشت typeof(حسگر ناحیه رنگی یک);
مورد “عدد صحیح”:
بازگشت typeof(دانشنامه هوشمند);
مورد “شماره”:
بازگشت typeof(شناور);
پیش فرض:
بازگشت typeof(رشته);
}
}
WssSite در این شیء کد, من گرفتن خطا در این, “شما در حال از دست رفته با استفاده از دستور یا مرجع مونتاژ?” هر ایده
سلام بلا,
WssSite Webreference برای lists.asmx است
به سلامتی,
عدی
عالی. با تشکر از عدی. Your post saved me lot of time in my migration project 🙂
قابلی ندارد جایا