Αρχεία

Retreiving περιεχομένου λίστας μέσω WebService στο SharePoint 2003

Προσθέστε το 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(χορδή);
}
}

4 σχόλια για Retreiving Λίστα Περιεχομένου μέσω WebService στο SharePoint 2003

Αφήστε μια απάντηση

Μπορείτε να χρησιμοποιήσετε αυτές τις ετικέτες HTML

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>