Aldoni la webreference al la Listoj.Asmx en sharepoint ejo.
Http://Localhost/_vti_ujaj/Listoj.Asmx
(SharePoint virtuala Adresara URL/_vti_ujaj/Listoj.Asmx
Skribi la sekvantajn metodojn en via webservice.
Privata datumo.DataTable GetDataTableFromWSS(Bool onlySchema)
{
Ŝnuro WssSiteUrl = http://192.168.111.21;
Ŝnuro WssSiteUrl = ConfigurationSettings.AppSettings[“WssSiteUrl”];
WssSite.Listoj enlistigas = novan WssSite.Listoj();
Listoj.Url = WssSiteUrl + “_Vti_ujaj/Listoj.Asmx”;
Listoj.Credentials = Sistemo.Reto.CredentialCache.DefaultCredentials;
Listoj.PreAuthenticate = vera;
//Vi devi pasi la Listan Nomon ĉi tie
Laĉi CommandText = “Dungito Info”;
XmlNode ListCollectionNode = listoj.GetListCollection();
XmlElement Listo = (XmlElement)ListCollectionNode.SelectSingleNode(Ŝnuro.Formato(“Wss:Listo[@Titoli='{0}?]”, CommandText), NameSpaceMgr);
Se (Enlistigi == null)
{
Ĵeti novan ArgumentException(Ŝnuro.Formato(“La listo {0} Ne povus esti trovita en la ejo {1}”, CommandText, WssSiteUrl));
}
Laĉi TechListName = Listo.GetAttribute(“Nomo”);
Datumoj.DataTable rezultas = novan datumon.DataTable(“Listo”);
XmlNode ListInfoNode = listoj.GetList(TechListName);
Sistemo.Teksto.StringBuilder fieldRefs = nova Sistemo.Teksto.StringBuilder();
Sistemo.Kolektoj.Hashtable DisplayNames = nova Sistemo.Kolektoj.Hashtable();
Foreach (XmlElement Kampo en ListInfoNode.SelectNodes(“Wss:Kampoj/wss:Kampo”, NameSpaceMgr))
{
Se (Kampo.HasChildNodes)
{
Foreach (XmlElement Fld en Kampo.SelectNodes(“Wss:Kampoj/wss:Kampo”, NameSpaceMgr))
{
Ŝnuro FieldName = Fld.GetAttribute(“Nomo”);
Ŝnuro FieldDisplayName = Fld.GetAttribute(“DisplayName”);
Se (Rezulto.Kolumnoj.Enhavas(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + FieldName + “)”;
}
Rezulto.Kolumnoj.Aldonas(FieldDisplayName, TypeFromField(Kampo));
FieldRefs.AppendFormat(“”, FieldName);
DisplayNames.Aldonas(FieldDisplayName, FieldName);
}
}
Alia
{
Laĉi FieldName = Kampo.GetAttribute(“Nomo”);
Laĉi FieldDisplayName = Kampo.GetAttribute(“DisplayName”);
Se (Rezulto.Kolumnoj.Enhavas(FieldDisplayName))
{
FieldDisplayName = FieldDisplayName + ” (” + FieldName + “)”;
}
Rezulto.Kolumnoj.Aldonas(FieldDisplayName, TypeFromField(Kampo));
FieldRefs.AppendFormat(“”, FieldName);
DisplayNames.Aldonas(FieldDisplayName, FieldName);
}
}
Se (OnlySchema) Revena rezulto;
XmlElement kaptas = ListInfoNode.OwnerDocument.CreateElement(“ViewFields”);
Kampoj.InnerXml = fieldRefs.ToString();
XmlNode ItemsNode = listoj.GetListItems(TechListName, “”, Null, Kampoj, “1000000”, Null);
// Lookup kaptas ĉiam komenci kun la numera IDENTIGAĴO, Tiam ;# Kaj tiam la ŝnura reprezentado.
// Ni estas normale nur interesita en la nomo, Do ni malkovras la IDENTIGAĴON.
Sistemo.Teksto.RegularExpressions.Regex CheckLookup = nova Sistemo.Teksto.RegularExpressions.Regex(“^D ;#”);
Foreach (XmlElement Ero en ItemsNode.SelectNodes(“Rs:Datumo/z:Disputo”, NameSpaceMgr))
{
Datumoj.DataRow newRow = rezulto.NewRow();
Foreach (Datumoj.DataColumn col en rezulto.Kolumnoj)
{
Se (Ero.HasAttribute(“Ows_” + (Ŝnuro)DisplayNames[Col.ColumnName]))
{
Laĉi val = Ero.GetAttribute(“Ows_” + (Ŝnuro)DisplayNames[Col.ColumnName]);
Se (CheckLookup.IsMatch((Ŝnuro)Val))
{
Laĉi valString = val kiel Ŝnuro;
Val = valString.Substring(ValString.IndexOf(“#”) + 1);
}
// Asignanta ŝnuron al kampo kiu atendas nombrojn aŭ
// Datetime valoroj volas implicitly transformi ilin
NewRow[Col] = Val;
}
}
Rezulto.Disputoj.Aldonas(NewRow);
}
Revena rezulto;
}
// La sekvanta Funkcio estas uzita Akiri Namespaces
Privata senmova XmlNamespaceManager _nsmgr;
Privata senmova XmlNamespaceManager NameSpaceMgr
{
Akiri
{
Se (_Nsmgr == null)
{
_Nsmgr = nova XmlNamespaceManager(Nova NameTable());
_Nsmgr.AddNamespace(“Wss”, “Http://Schemas.Microsoft.Com/sharepoint/sapo/”);
_Nsmgr.AddNamespace(“S”, “Uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882”);
_Nsmgr.AddNamespace(“Dt”, “Uuid:C2F41010-65B3-11d1-A29F-00AA00C14882”);
_Nsmgr.AddNamespace(“Rs”, “Urno:Schemas-microsoft-com:Rowset”);
_Nsmgr.AddNamespace(“Z”, “#RowsetSchema”);
}
Revena _nsmgr;
}
}
Privata Tipo TypeFromField(XmlElement kampo)
{
Ŝaltilo (Kampo.GetAttribute(“Tipo”))
{
Kazo “DateTime”:
Revena typeof(DateTime);
Kazo “Integralo”:
Revena typeof(Int);
Kazo “Nombro”:
Revena typeof(Flosigi);
Defaŭlta:
Revena typeof(Ŝnuro);
}
}
WssSite objekto sur #?i tiu kodo, Mi estas akiranta eraron sur #tio ?i, “Vi mankas uzanta instrukcio #a? asemblea referenco?” Ajna ideo
Hi Bala,
WssSite estas Webreference por la listoj.Asmx
Huraoj,
Uday
Bonega. Dankonas Uday. Your post saved me lot of time in my migration project 🙂
Vi estas bonvena Jaya