I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Jeg har selv en løsning godt nok til noget Ajax / jQuery, men her benytter jeg Json som i mange tilfælde fylder mindre end XML og er faktisk utrolig nemt at arbejde med, måske kan du bruge nedenstående funktioner:
public static string JsonCreate<T>(T serializableObject, bool doEncode) where T : class { var serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(T)); var ms = new MemoryStream(); serializer.WriteObject(ms, serializableObject); var json = Encoding.UTF8.GetString(ms.ToArray()); return doEncode ? HttpUtility.HtmlEncode(json) : json; }
public static T JsonParse<T>(string jsonData, bool doDecode) where T : class { if (doDecode) jsonData = HttpUtility.HtmlDecode(jsonData); using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonData))) { var serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(T)); return serializer.ReadObject(ms) as T; } }
Hold da op.. Mange tak for alle ideerne. Det lyder til at det nemmest vil være at returnere en string i stedet, så det har jeg ændret webservicen til.
Det jeg egentlig skal bruge det til er; Idag laver jeg SQL kaldet direkte fra klienten og looper igennem resultat rows og gør forskellige ting, med dette:
SqlDataReader dataReaderCopy = FunctionSqlDataReader(connectionString, "SELECT * FROM Jobs_Copy"); if (dataReaderCopy != null && dataReaderCopy.HasRows) { while (dataReaderCopy.Read()) ...DO STUFF
..og det virker fint. Men i stedet ville jeg gerne bruge webservices, så logikken kan ændres/opdateres ét sted i stedet for i selve klienten.
Jeg har nu ændret webservicen så den returnerer string:
[WebMethod(Description = "It will fetch copy jobs from SQL database.")] public string GetCopyJobs() { string sqlStr = "SELECT * FROM Jobs_Copy"; SqlConnection conn = new SqlConnection(connectionString); DataSet dsCopyJobs = new DataSet(); SqlDataAdapter daCopyJobs = new SqlDataAdapter(sqlStr, conn); daCopyJobs.Fill(dsCopyJobs);
XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(dsCopyJobs.GetXml()); string result = xmlDoc.InnerXml; return result; }
XmlDocument doc = new XmlDocument(); doc.LoadXml(wsDoc); }
Altså er resultatet pt i et XmlDocument.
Hvordan kan jeg derfra "loope" gennem noderne ligesom jeg hidtil har gjort med "while (dataReaderCopy.Read())" hvor jeg har kunnet bruge DB indholdet ved dataReaderCopy[1].ToString(), dataReaderCopy[2].ToString() osv?
Beklager at den ikke er sevet ind, har ikke helt fanget logikken endnu :-/
'System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement>' does not contain a definition for 'Select' and no extension method 'Select' accepting a first argument of type 'System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement>' could be found (are you missing a using directive or an assembly reference?)
I usings har jeg pt:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data.SqlClient; using System.Data; using System.Diagnostics; using System.Drawing; using System.IO; using System.Runtime.InteropServices; using System.Web.Services; using System.Windows.Forms; using System.Xml; using System.Xml.Linq; using Microsoft.Win32;
Hah, ja ... det kan man vist godt sige jeg var :-)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.