Datenaustausch mit Webservice

03/09/2009 - 00:16 von martina gerling | Report spam
Hallo,

ich möchte Daten von einem Webservice in meiner Seite in einer
Combobox anzeigen. Da es sich um viele Daten handeln kann, welche ich
vom Webservice erwarte, weiß ich nicht so richtig wie ich das machen
kann. Hier mal mein Ansatz - leider mit Fehler:

Mein Webservice liest eine XMLDatei und filtert die benötigten Daten
aus. Danach wird eine Liste (eigende Klasse) mit den Werten gefüllt:

Klasse:
public class CResolutionItems
{
private int _width = 0;
private int _height = 0;
private string _trenner = ":";

public CResolutionItems()
{
}

public CResolutionItems(int _w, int _h, string trenner)
{
this._width = _w;
this._height = _h;
this._trenner = trenner;
}

public string GetItems()
{
string ausgabe = "";

ausgabe = string.Format("{0} {1} {2}", _width, _trenner,
_height);

return ausgabe;
}
}

WebService:
[WebMethod]
public List<CResolutionItems> GetItems(bool isRelativ)
{
XmlNodeList nodelist;
string trenner = ":";
if (isRelativ)
{
nodelist = Document.SelectNodes(@"/resolutions/res
[@type='relativ']/item");
trenner = ":";
}
else
{
nodelist = Document.SelectNodes(@"/resolutions/res
[@type='absolut']/item");
trenner = "x";
}
List<CResolutionItems> ausgabe = new List<CResolutionItems>();

if (nodelist.Count > 0)
{
foreach(XmlNode node in nodelist)
{
ausgabe.Add(new CResolutionItems(int.Parse
(node.Attributes["width"].Value),
int.Parse(node.Attributes["height"].Value),
trenner));
}
}

return ausgabe;
}

ASPX Seite:
protected void le_ckbToolBarRel_CheckedChanged(object sender,
EventArgs e)
{
List<CResolutionItems> listRes = new List<CResolutionItems>();
localhost.ResolutionService resService = new
localhost.ResolutionService();
if (le_ckbToolBarRel.Checked)
{
listRes = resService.GetItems(true);
}
else
{
listRes = resService.GetItems(false);
}
}

Ich erhalte jedoch hier ->listRes = resService.GetItems(...) Fehler:
Fehler 1 Eine implizite Konvertierung vom Typ
"localhost.CResolutionItems[]" in
"System.Collections.Generic.List<CResolutionItems>" ist nicht möglich.
F:\Uebungen\asp_ajax_uebungen\eigeneUebungen\LE_1\Default.aspx.cs 20
23 F:\...\LE_1\

Wie kann ich die Daten richtig übertragen oder wo ist mein Denkfehler?
Es wàre toll, wenn ihr mir weiterhelfen könntet.

Gruss

Martins
 

Lesen sie die antworten

#1 martina gerling
03/09/2009 - 12:44 | Warnen spam
Hallo NG,

hat denn keiner eine Idee. Ich habe im Webservice jetzt folgendes
abgeàndert und übertrage nun die Klasse als Array:
[WebMethod]
public CResolutionItems[] GetResolutionItems(bool isRelativ)
{
...
List<CResolutionItems> ausgabe = new List<CResolutionItems>();

if (nodelist.Count > 0)
{
foreach(XmlNode node in nodelist)
{
ausgabe.Add(new CResolutionItems(int.Parse
(node.Attributes["width"].Value),
int.Parse(node.Attributes["height"].Value),
trenner));
}
}

return ausgabe.ToArray();
}

Empfangen wollte ich das Array so:
protected void le_ckbToolBarRel_CheckedChanged(object sender,
EventArgs e)
{
localhost.ResolutionService resService = new
localhost.ResolutionService();
CResolutionItems[] items = (CResolutionItems)
resService.GetResolutionItems(true);
}

Es ist jedoch beim Empfang wieder der Fehler:
Fehler 1 Eine Konvertierung vom Typ "localhost.CResolutionItems[]" in
"CResolutionItems" ist nicht möglich. F:\Uebungen\asp_ajax_uebungen
\eigeneUebungen\LE_1\Default.aspx.cs 18 36 F:\...\LE_1\

Könnt Ihr mir bitte weiterhelfen?

Gruss

Martina

Ähnliche fragen