Προσθέστε το webreference στο Lists.asmx στην τοποθεσία SharePoint.
http://localhost / _vti_bin / Lists.asmx
(SharePoint εικονικό κατάλογο URL / _vti_bin / Lists.asmx
γράψτε τις ακόλουθες μεθόδους με webservice σας.
ιδιωτική 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 = true;
//θα πρέπει να περάσει στη λίστα ονομάτων εδώ
κορδόνι CommandText = “Πληροφορίες Υπάλληλος”;
XMLΚόμβος που ListCollectionNode = lists.GetListCollection();
XmlElement Λίστα = (XmlElement)ListCollectionNode.SelectSingleNode(String.Format(“WSS:Κατάλογος[@ Τίτλος = "{0}']”, CommandText), NameSpaceMgr);
αν (Λίστα == null)
{
ρίξει νέο ArgumentException(String.Format(“Ο κατάλογος {0} δεν θα μπορούσε να βρεθεί στην ιστοσελίδα {1}”, CommandText, WssSiteUrl));
}
κορδόνι TechListName = List.GetAttribute(“Όνομα”);
data.DataTable αποτέλεσμα = νέα data.DataTable(“κατάλογος”);
XMLΚόμβος που ListInfoNode = lists.GetList(TechListName);
System.Text.StringBuilder fieldRefs = νέα System.Text.StringBuilder();
System.Collections.Hashtable DisplayNames = νέα System.Collections.Hashtable();
foreach (XmlElement πεδίο σε ListInfoNode.SelectNodes(“WSS:Πεδία / WSS:Πεδίο”, NameSpaceMgr))
{
αν (Field.HasChildNodes)
{
foreach (XmlElement Fld σε Field.SelectNodes(“WSS:Πεδία / WSS:Πεδίο”, NameSpaceMgr))
{
String = FIELDNAME Fld.GetAttribute(“Όνομα”);
String = FieldDisplayName Fld.GetAttribute(“DisplayName”);
αν (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + ΌνομαΠεδίου + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(Πεδίο));
fieldRefs.AppendFormat(“”, ΌνομαΠεδίου);
DisplayNames.Add(FieldDisplayName, ΌνομαΠεδίου);
}
}
αλλού
{
κορδόνι ΌνομαΠεδίου = Field.GetAttribute(“Όνομα”);
κορδόνι FieldDisplayName = Field.GetAttribute(“DisplayName”);
αν (result.Columns.Contains(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + ΌνομαΠεδίου + “)”;
}
result.Columns.Add(FieldDisplayName, TypeFromField(Πεδίο));
fieldRefs.AppendFormat(“”, ΌνομαΠεδίου);
DisplayNames.Add(FieldDisplayName, ΌνομαΠεδίου);
}
}
αν (onlySchema) αποτέλεσμα την επιστροφή;
Πεδία XmlElement = ListInfoNode.OwnerDocument.CreateElement(“ViewFields”);
fields.InnerXml = fieldRefs.ToString();
XMLΚόμβος που ItemsNode = lists.GetListItems(TechListName, “”, άκυρος, πεδία, “1000000”, άκυρος);
// Πεδία αναζήτησης ξεκινούν πάντα με το αριθμητικό αναγνωριστικό, τότε ;# και στη συνέχεια η παράσταση συμβολοσειράς.
// Είμαστε συνήθως ενδιαφέρονται μόνο για το όνομα, έτσι ώστε να αφαιρέσει από το αναγνωριστικό.
System.Text.RegularExpressions.Regex CheckLookup = νέα System.Text.RegularExpressions.Regex(“^ D ;#”);
foreach (XmlElement Θέση σε ItemsNode.SelectNodes(“RS:δεδομένα / z:σειρά”, NameSpaceMgr))
{
data.DataRow newRow = result.NewRow();
foreach (data.DataColumn διάσελο σε result.Columns)
{
αν (Item.HasAttribute(“ows_” + (χορδή)DisplayNames[col.ColumnName]))
{
κορδόνι Val = Item.GetAttribute(“ows_” + (χορδή)DisplayNames[col.ColumnName]);
αν (CheckLookup.IsMatch((χορδή)ώρες))
{
κορδόνι valString = val ως String;
val = valString.Substring(valString.IndexOf(“#”) + 1);
}
// Εκχώρηση ένα string σε ένα πεδίο που αναμένει αριθμούς ή
// τιμές datetime θα τους μετατρέψει έμμεσα
newRow[με] = Η;
}
}
result.Rows.Add(newRow);
}
αποτέλεσμα την επιστροφή;
}
// Η ακόλουθη λειτουργία χρησιμοποιείται για να πάρει Namespaces
ιδιωτική στατική XmlNamespaceManager _nsmgr;
ιδιωτική στατική XmlNamespaceManager NameSpaceMgr
{
πάρει
{
αν (_nsmgr == null)
{
_nsmgr = νέα XmlNamespaceManager(νέα 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”, “δοχείο:σχήματα-microsoft-com:rowset”);
_nsmgr.AddNamespace(“από”, “#RowsetSchema”);
}
επιστρέψει _nsmgr;
}
}
ιδιώτης Τύπος TypeFromField(XmlElement πεδίο)
{
διακόπτης (field.GetAttribute(“Τύπος”))
{
περίπτωση “DateTime”:
επιστρέφουν typeof(DateTime);
περίπτωση “Ακέραιος αριθμός”:
επιστρέφουν typeof(int);
περίπτωση “Αριθμός”:
επιστρέφουν typeof(φλοτέρ);
αθέτηση:
επιστρέφουν typeof(χορδή);
}
}
WssSite αντιρρήσεις σχετικά με αυτόν τον κωδικό, Έχω πάρει λάθος σε αυτό, “σας λείπει μια οδηγία using ή αναφοράς του συγκροτήματος?” οποιαδήποτε ιδέα
Bala Υπάρχει,
WssSite είναι μια Webreference για την lists.asmx
Cheers,
Uday
Άριστη. Χάρη Uday. Your post saved me lot of time in my migration project
Είστε ευπρόσδεκτοι Jaya