Дадаць да WebReference Lists.asmx на сайце SharePoint.
HTTP://лакальны / _vti_bin / Lists.asmx
(URL віртуальны даведнік SharePoint / _vti_bin / Lists.asmx
напісаць наступныя метады ў вашым вэб-сэрвісу.
прыватны 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 = TRUE;
//вы павінны прайсці спісу імёнаў тут
Радок CommandText = “Супрацоўнік інфармацыя”;
XmlNode ListCollectionNode = lists.GetListCollection();
XmlElement List = (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();
System.Collections.Hashtable DisplayNames = новы System.Collections.Hashtable();
Еогеасп (XmlElement поле ў ListInfoNode.SelectNodes(“WSS:Поля / WSS:Поле”, NameSpaceMgr))
{
калі (Field.HasChildNodes)
{
Еогеасп (XMLElement Fld ў Field.SelectNodes(“WSS:Поля / WSS:Поле”, NameSpaceMgr))
{
String = FIELDNAME Fld.GetAttribute(“Назва”);
String = FieldDisplayName Fld.GetAttribute(“Адлюстроўваецца імя”);
калі (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + FieldName + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(Поле));
fieldRefs.AppendFormat(“”, FieldName);
DisplayNames.Add(FieldDisplayName, FieldName);
}
}
яшчэ
{
string FieldName = Field.GetAttribute(“Назва”);
string FieldDisplayName = Field.GetAttribute(“Адлюстроўваецца імя”);
калі (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + FieldName + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(Поле));
fieldRefs.AppendFormat(“”, FieldName);
DisplayNames.Add(FieldDisplayName, FieldName);
}
}
калі (onlySchema) return result;
XmlElement fields = ListInfoNode.OwnerDocument.CreateElement(“ViewFields”);
fields.InnerXml = fieldRefs.ToString();
XmlNode ItemsNode = lists.GetListItems(TechListName, “”, null, палёў, “1000000”, null);
// Lookup fields always start with the numeric ID, then ;# and then the string representation.
// We are normally only interested in the name, so we strip the ID.
System.Text.RegularExpressions.Regex CheckLookup = new System.Text.RegularExpressions.Regex(“^\d ;#”);
Еогеасп (XmlElement Item in ItemsNode.SelectNodes(“rs:data/z:row”, NameSpaceMgr))
{
data.DataRow newRow = result.NewRow();
Еогеасп (data.DataColumn col in result.Columns)
{
калі (Item.HasAttribute(“ows_” + (радок)DisplayNames[col.ColumnName]))
{
string val = Item.GetAttribute(“ows_” + (радок)DisplayNames[col.ColumnName]);
калі (CheckLookup.IsMatch((радок)val))
{
string valString = val as String;
val = valString.Substring(valString.IndexOf(“#”) + 1);
}
// Assigning a string to a field that expects numbers or
// datetime values will implicitly convert them
newRow[col] = val;
}
}
result.Rows.Add(newRow);
}
return result;
}
// The following Function is used to Get Namespaces
private static XmlNamespaceManager _nsmgr;
private static XmlNamespaceManager NameSpaceMgr
{
get
{
калі (_nsmgr == null)
{
_nsmgr = new XmlNamespaceManager(new NameTable());
_nsmgr.AddNamespace(“WSS”, “HTTP://schemas.microsoft.com/sharepoint/soap/”);
_nsmgr.AddNamespace(“з”, “uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882”);
_nsmgr.AddNamespace(“dt”, “uuid:C2F41010-65B3-11d1-A29F-00AA00C14882”);
_nsmgr.AddNamespace(“rs”, “urn:schemas-microsoft-com:rowset”);
_nsmgr.AddNamespace(“z”, “#RowsetSchema”);
}
return _nsmgr;
}
}
private Type TypeFromField(XmlElement field)
{
switch (field.GetAttribute(“Type”))
{
case “DateTime”:
return typeof(DateTime);
case “Integer”:
return typeof(int);
case “Number”:
return typeof(float);
дэфолт:
return 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