Consumir WebMethod que devuelve Lista Generica

13/11/2008 - 05:38 por Carlos H | Informe spam
Hola a todos.

Pues resulta que tengo un webservice con un WebMethod tipo Lista Generica,
mas o menos así:

[WebMethod(Description = "Lista Habilitaba para Combos 2")]
public List<lstCombo> get_lstCombo2(Int32 pTipo)
{
List<lstCombo> MyList = new List<lstCombo>();
SqlDataAdapter da;
DataSet dsTabla = new DataSet();
SqlCommand sc = new SqlCommand();

sc.Connection = sqlConn;
sc.CommandType = CommandType.StoredProcedure;
switch (pTipo)
{
case 1:
sc.CommandText = "llena_combo_get";
break;
}

OpenConnection();
da = new SqlDataAdapter(sc);
da.Fill(dsTabla);
CloseConnection();

if (dsTabla.Tables[0].Rows.Count > 0)
{
foreach (DataRow item in dsTabla.Tables[0].Rows)
{
lstCombo registro = new lstCombo();
registro.data = (Int32)item["data"];
registro.label = (string)item["label"];
MyList.Add(registro);
}
}
else
{
lstCombo registro = new lstCombo();
registro.data = 0;
registro.label = "Ninguno";
MyList.Add(registro);
}

return MyList;
}

______________________
LISTA es una clase:

using System;
using System.Collections.Generic;
using System.Text;

public class Lista
{
public Lista() { }

Int32 _data = 0;
string _label = "";

public Int32 data
{
set { _data = value; }
get { return _data; }
}

public string label
{
set { _label = value; }
get { return _label; }
}


}

Y desde un una Aplicación Windows hecha tambien con C#, no se como invocarla
e intentado de esta forma:

ExalAr.WS.exalar ws = new ExalAr.WS.exalar();
List<ExalAr.WS.lstCombo> lst = ws.get_lstCombo2(1);
y nada

me envia es error:

Cannot implicitly convert type 'ExalAr.WS.lstCombo[]' to
'System.Collections.Generic.List<ExalAr.WS.lstComb o>'


También intenté así:

ExalAr.WS.exalar ws = new ExalAr.WS.exalar();
List<Lista> lst = ws.get_lstCombo2(1);

y tampoco, no jala.

Me envía este error:

Cannot implicitly convert type 'ExalAr.WS.lstCombo[]' to
'System.Collections.Generic.List<Lista>'

_________________________________
que será que puede estar pasando, el WS lo he probado desde el web y si
funciona bien, pero no se como recoibir los datos devueltos en un Form de C#

Les agradezco toda la ayuda que me puedan brindar...

Me podría iluminar un poco? porque para mi esto no es tan trivial.

qué estaré haciendo mal?

Saludos

Preguntas similare

Leer las respuestas

#1 Octavio Hernandez
13/11/2008 - 14:14 | Informe spam
Carlos,

En vez de:

List<ExalAr.WS.lstCombo> lst = ws.get_lstCombo2(1);

utiliza:

ExalAr.WS.lstCombo[] lst = ws.get_lstCombo2(1);

Las listas genéricas se serializan como arrays.

Slds - Octavio




"Carlos H" wrote in message
news:
Hola a todos.

Pues resulta que tengo un webservice con un WebMethod tipo Lista Generica,
mas o menos así:

[WebMethod(Description = "Lista Habilitaba para Combos 2")]
public List<lstCombo> get_lstCombo2(Int32 pTipo)
{
List<lstCombo> MyList = new List<lstCombo>();
SqlDataAdapter da;
DataSet dsTabla = new DataSet();
SqlCommand sc = new SqlCommand();

sc.Connection = sqlConn;
sc.CommandType = CommandType.StoredProcedure;
switch (pTipo)
{
case 1:
sc.CommandText = "llena_combo_get";
break;
}

OpenConnection();
da = new SqlDataAdapter(sc);
da.Fill(dsTabla);
CloseConnection();

if (dsTabla.Tables[0].Rows.Count > 0)
{
foreach (DataRow item in dsTabla.Tables[0].Rows)
{
lstCombo registro = new lstCombo();
registro.data = (Int32)item["data"];
registro.label = (string)item["label"];
MyList.Add(registro);
}
}
else
{
lstCombo registro = new lstCombo();
registro.data = 0;
registro.label = "Ninguno";
MyList.Add(registro);
}

return MyList;
}

______________________
LISTA es una clase:

using System;
using System.Collections.Generic;
using System.Text;

public class Lista
{
public Lista() { }

Int32 _data = 0;
string _label = "";

public Int32 data
{
set { _data = value; }
get { return _data; }
}

public string label
{
set { _label = value; }
get { return _label; }
}


}

Y desde un una Aplicación Windows hecha tambien con C#, no se como
invocarla e intentado de esta forma:

ExalAr.WS.exalar ws = new ExalAr.WS.exalar();
List<ExalAr.WS.lstCombo> lst = ws.get_lstCombo2(1);
y nada

me envia es error:

Cannot implicitly convert type 'ExalAr.WS.lstCombo[]' to
'System.Collections.Generic.List<ExalAr.WS.lstComb o>'


También intenté así:

ExalAr.WS.exalar ws = new ExalAr.WS.exalar();
List<Lista> lst = ws.get_lstCombo2(1);

y tampoco, no jala.

Me envía este error:

Cannot implicitly convert type 'ExalAr.WS.lstCombo[]' to
'System.Collections.Generic.List<Lista>'

_________________________________
que será que puede estar pasando, el WS lo he probado desde el web y si
funciona bien, pero no se como recoibir los datos devueltos en un Form de
C#

Les agradezco toda la ayuda que me puedan brindar...

Me podría iluminar un poco? porque para mi esto no es tan trivial.

qué estaré haciendo mal?

Saludos
Respuesta Responder a este mensaje
#2 Carlos H
13/11/2008 - 21:19 | Informe spam
OOppss!!!
eso fué contundente!!!

Perfecto, funcionó de maravisha...

"Octavio Hernandez" escribió en el mensaje
de noticias news:
Carlos,

En vez de:

List<ExalAr.WS.lstCombo> lst = ws.get_lstCombo2(1);

utiliza:

ExalAr.WS.lstCombo[] lst = ws.get_lstCombo2(1);

Las listas genéricas se serializan como arrays.

Slds - Octavio




"Carlos H" wrote in message
news:
Hola a todos.

Pues resulta que tengo un webservice con un WebMethod tipo Lista
Generica, mas o menos así:

[WebMethod(Description = "Lista Habilitaba para Combos 2")]
public List<lstCombo> get_lstCombo2(Int32 pTipo)
{
List<lstCombo> MyList = new List<lstCombo>();
SqlDataAdapter da;
DataSet dsTabla = new DataSet();
SqlCommand sc = new SqlCommand();

sc.Connection = sqlConn;
sc.CommandType = CommandType.StoredProcedure;
switch (pTipo)
{
case 1:
sc.CommandText = "llena_combo_get";
break;
}

OpenConnection();
da = new SqlDataAdapter(sc);
da.Fill(dsTabla);
CloseConnection();

if (dsTabla.Tables[0].Rows.Count > 0)
{
foreach (DataRow item in dsTabla.Tables[0].Rows)
{
lstCombo registro = new lstCombo();
registro.data = (Int32)item["data"];
registro.label = (string)item["label"];
MyList.Add(registro);
}
}
else
{
lstCombo registro = new lstCombo();
registro.data = 0;
registro.label = "Ninguno";
MyList.Add(registro);
}

return MyList;
}

______________________
LISTA es una clase:

using System;
using System.Collections.Generic;
using System.Text;

public class Lista
{
public Lista() { }

Int32 _data = 0;
string _label = "";

public Int32 data
{
set { _data = value; }
get { return _data; }
}

public string label
{
set { _label = value; }
get { return _label; }
}


}

Y desde un una Aplicación Windows hecha tambien con C#, no se como
invocarla e intentado de esta forma:

ExalAr.WS.exalar ws = new ExalAr.WS.exalar();
List<ExalAr.WS.lstCombo> lst = ws.get_lstCombo2(1);
y nada

me envia es error:

Cannot implicitly convert type 'ExalAr.WS.lstCombo[]' to
'System.Collections.Generic.List<ExalAr.WS.lstComb o>'


También intenté así:

ExalAr.WS.exalar ws = new ExalAr.WS.exalar();
List<Lista> lst = ws.get_lstCombo2(1);

y tampoco, no jala.

Me envía este error:

Cannot implicitly convert type 'ExalAr.WS.lstCombo[]' to
'System.Collections.Generic.List<Lista>'

_________________________________
que será que puede estar pasando, el WS lo he probado desde el web y si
funciona bien, pero no se como recoibir los datos devueltos en un Form de
C#

Les agradezco toda la ayuda que me puedan brindar...

Me podría iluminar un poco? porque para mi esto no es tan trivial.

qué estaré haciendo mal?

Saludos



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida