Legg til WebReference til Lists.asmx i SharePoint-området.
http://localhost / _Vti_Bin / Lists.asmx
(SharePoint virtuelle Directory URL / _vti_bin / Lists.asmx
Skriv følgende metoder i WebService din.
private data.DataTable GetDataTableFromWSS(bool onlySchema)
{
string WssSiteUrl = http://192.168.111.21;
string WssSiteUrl = ConfigurationSettings.AppSettings[“WssSiteUrl”];
WssSite.Lists lister = nye WssSite.Lists();
lists.Url = WssSiteUrl + “_vti_bin / Lists.asmx”;
lists.Credentials = System.Net.CredentialCache.DefaultCredentials;
lists.PreAuthenticate = sant;
//you have to pass the List Name here
string CommandText = “Arbeidstaker Info”;
XmlNode ListCollectionNode = lists.GetListCollection();
XmlElement List = (XmlElement)ListCollectionNode.SelectSingleNode(String.Format(“wss:Liste[@ Tittel = '{0}']”, CommandText), NameSpaceMgr);
hvis (Liste == null)
{
kaste nytt ArgumentException(String.Format(“Listen {0} kunne ikke bli funnet i området {1}”, CommandText, WssSiteUrl));
}
string TechListName = List.GetAttribute(“Navn”);
data.DataTable resultat = nye data.DataTable(“liste”);
XmlNode node = listinfo lists.GetList(TechListName);
System.Text.StringBuilder fieldRefs = nye System.Text.StringBuilder();
System.Collections.Hashtable DisplayNames = nye System.Collections.Hashtable();
foreach (XmlElement Field i ListInfoNode.SelectNodes(“wss:Felt / WSS:Field”, NameSpaceMgr))
{
hvis (Field.HasChildNodes)
{
foreach (XmlElement Fld i Field.SelectNodes(“wss:Felt / WSS:Field”, NameSpaceMgr))
{
string fieldname = Fld.GetAttribute(“Navn”);
string FieldDisplayName = Fld.GetAttribute(“DisplayName”);
hvis (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + Fieldname + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(Field));
fieldRefs.AppendFormat(“”, Fieldname);
DisplayNames.Add(FieldDisplayName, Fieldname);
}
}
annet
{
string fieldname = Field.GetAttribute(“Navn”);
string FieldDisplayName = Field.GetAttribute(“DisplayName”);
hvis (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + Fieldname + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(Field));
fieldRefs.AppendFormat(“”, Fieldname);
DisplayNames.Add(FieldDisplayName, Fieldname);
}
}
hvis (onlySchema) avkastning resultat;
XmlElement felt = ListInfoNode.OwnerDocument.CreateElement(“ViewFields”);
fields.InnerXml = fieldRefs.ToString();
XmlNode ItemsNode = lists.GetListItems(TechListName, “”, null, felt, “1000000”, null);
// Oppslagsfelt alltid starte med de numeriske ID, da ;# og deretter strengen representasjon.
// Vi er normalt bare interessert i navnet, så vi stripe ID.
System.Text.RegularExpressions.Regex CheckLookup = nye System.Text.RegularExpressions.Regex(“^ D ;#”);
foreach (XmlElement element i ItemsNode.SelectNodes(“rs:dato / z:rad”, NameSpaceMgr))
{
data.DataRow newRow = result.NewRow();
foreach (data.DataColumn col result.Columns)
{
hvis (Item.HasAttribute(“ows_” + (streng)DisplayNames[col.ColumnName]))
{
string val = Item.GetAttribute(“ows_” + (streng)DisplayNames[col.ColumnName]);
hvis (CheckLookup.IsMatch((streng)valget))
{
string valString = val som String;
valg = valString.Substring(valString.IndexOf(“#”) + 1);
}
// Tilordne en streng til et felt som forventer tall eller
// datetime verdier vil implisitt konvertere dem
newRow[med] = Choice;
}
}
result.Rows.Add(newRow);
}
avkastning resultat;
}
// Følgende Funksjonen brukes til å få navnerom
private statisk XmlNamespaceManager _nsmgr;
private statisk XmlNamespaceManager NameSpaceMgr
{
får
{
hvis (_nsmgr == null)
{
_nsmgr = nye XmlNamespaceManager(nye NameTable());
_nsmgr.AddNamespace(“wss”, “http://schemas.microsoft.com/sharepoint/soap/”);
_nsmgr.AddNamespace(“med”, “uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882”);
_nsmgr.AddNamespace(“dt”, “uuid:C2F41010-65B3-11d1-A29F-00AA00C14882”);
_nsmgr.AddNamespace(“rs”, “urne:skjemaer-microsoft-com:rowset”);
_nsmgr.AddNamespace(“av”, “#RowsetSchema”);
}
avkastning _nsmgr;
}
}
private Type TypeFromField(XmlElement feltet)
{
bryteren (field.GetAttribute(“Type”))
{
saken “Brennvidde”:
avkastning typeof(Brennvidde);
saken “Integer”:
avkastning typeof(int);
saken “Nummer”:
avkastning typeof(float);
standard:
avkastning typeof(streng);
}
}
WssSite objekt på denne koden, Jeg får feil på dette, “du mangler en bruker direktiv eller en forsamling referanse?” noen ide
Hei Bala,
WssSite er en WebReference for lists.asmx
Skål,
Uday
Utmerket. Takk Uday. Your post saved me lot of time in my migration project 🙂
Du er velkommen Jaya