Dodaj webreference do Lists.asmx w witrynie programu SharePoint.
http://localhost / _vti_bin / Lists.asmx
(SharePoint wirtualny katalog URL / _vti_bin / Lists.asmx
napisać następujące metody w swoim usługa.
prywatny data.DataTable GetDataTableFromWSS(bool onlySchema)
{
ciąg WssSiteUrl = http://192.168.111.21;
ciąg WssSiteUrl = ConfigurationSettings.AppSettings[“WssSiteUrl”];
WssSite.Lists listy znaku = WssSite.Lists nowe();
lists.Url = WssSiteUrl + “_vti_bin / Lists.asmx”;
lists.Credentials = System.Net.CredentialCache.DefaultCredentials;
lists.PreAuthenticate = true;
//musisz przekazać nazwę listy tutaj
ciąg CommandText = “Informacje pracownik”;
XMLNode = lists.GetListCollection ListCollectionNode();
XmlElement list = (XmlElement)ListCollectionNode.SelectSingleNode(String.Format(“WSS:Lista[@ Title = '{0}"]”, CommandText), NameSpaceMgr);
jeśli (Lista == 0)
{
throw new ArgumentException(String.Format(“Lista {0} nie można znaleźć w witrynie {1}”, CommandText, WssSiteUrl));
}
TechListName string = List.GetAttribute(“Nazwa”);
Wynik data.DataTable = new data.DataTable(“lista”);
Węzeł XMLNode = lists.GetList mailowej(TechListName);
Bibl. System.Text.StringBuilder pole = new System.Text.StringBuilder();
DisplayNames System.Collections.Hashtable = new System.Collections.Hashtable();
foreach (Pole XmlElement w ListInfoNode.SelectNodes(“WSS:Pola / WSS:Pole”, NameSpaceMgr))
{
jeśli (Field.HasChildNodes)
{
foreach (Fld XmlElement w Field.SelectNodes(“WSS:Pola / WSS:Pole”, NameSpaceMgr))
{
ciąg FieldName = Fld.GetAttribute(“Nazwa”);
ciąg FieldDisplayName = Fld.GetAttribute(“DisplayName”);
jeśli (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + FieldName + “)”;
}
result.Columns.Add(FieldDisplayName, Od polu Typ(Pole));
fieldRefs.AppendFormat(“”, FieldName);
DisplayNames.Add(FieldDisplayName, FieldName);
}
}
więcej
{
ciąg FieldName = Field.GetAttribute(“Nazwa”);
ciąg FieldDisplayName = Field.GetAttribute(“DisplayName”);
jeśli (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + FieldName + “)”;
}
result.Columns.Add(FieldDisplayName, Od polu Typ(Pole));
fieldRefs.AppendFormat(“”, FieldName);
DisplayNames.Add(FieldDisplayName, FieldName);
}
}
jeśli (onlySchema) return wynik;
Pola XmlElement = ListInfoNode.OwnerDocument.CreateElement(“ViewFields”);
fields.InnerXml = fieldRefs.ToString();
XMLNode ItemsNode znaku = lists.GetListItems(TechListName, “”, NIC, pola, “1000000”, NIC);
// Pola odnośników zawsze zaczynają się od numerycznym ID, następnie ;# a następnie reprezentacja ciąg.
// Jesteśmy zwykle zainteresowany tylko nazwy, więc rozebrać ID.
CheckLookup System.Text.RegularExpressions.Regex = new System.Text.RegularExpressions.Regex(“^ D ;#”);
foreach (Przedmiot XmlElement w ItemsNode.SelectNodes(“rs:Data / z:rząd”, NameSpaceMgr))
{
data.DataRow newRow = result.NewRow();
foreach (data.DataColumn kapusta w result.Columns)
{
jeśli (Item.HasAttribute(“ows_” + (string)DisplayNames[col.ColumnName]))
{
ciąg val Item.GetAttribute =(“ows_” + (string)DisplayNames[col.ColumnName]);
jeśli (CheckLookup.IsMatch((string)val))
{
ciąg val = valString jako String;
val = valString.Substring(valString.IndexOf(“#”) + 1);
}
// Przypisywanie łańcucha do pola, które spodziewa się liczby lub
// datetime wartości będą niejawnie konwertować je
newRow[z] = Val;
}
}
result.Rows.Add(newRow);
}
return wynik;
}
// Poniższa funkcja jest używana do pobierania Przestrzenie nazw
private static _nsmgr XmlNamespaceManager;
private static NameSpaceMgr XmlNamespaceManager
{
dostać
{
jeśli (_nsmgr == null)
{
_nsmgr = new XmlNamespaceManager(nowy NameTable());
_nsmgr.AddNamespace(“WSS”, “http://schemas.microsoft.com / SharePoint / mydło /”);
_nsmgr.AddNamespace(“z”, “uuid:BDC6E3F0-6DA3-11D1-A2A3-00AA00C14882”);
_nsmgr.AddNamespace(“dt”, “uuid:C2F41010-65B3-11D1-A29F-00AA00C14882”);
_nsmgr.AddNamespace(“rs”, “urna:schemas-microsoft-com:zestaw wierszy”);
_nsmgr.AddNamespace(“z”, “#RowsetSchema”);
}
powrót _nsmgr;
}
}
Private Type Typ Z Field(Pole XmlElement)
{
przełączyć (field.GetAttribute(“Typ”))
{
przypadek “DateTime”:
powrót typeof(DateTime);
przypadek “Liczba całkowita”:
powrót typeof(int);
przypadek “Liczba”:
powrót typeof(unosić się);
domyślna:
powrót typeof(string);
}
}
WssSite obiekt na tym kodem, Dostaję błąd na tej, “brakuje using dyrektywa lub odwołania do zestawu?” Każdy pomysł
Hi Bala,
WssSite jest Webreference dla lists.asmx
Okrzyki,
Uday
Doskonały. Uday Dzięki. Your post saved me lot of time in my migration project 🙂
Zapraszamy Jaya