Foros del Web » Programando para Internet » ASPX (.net) »

Como regresar un datatable desde un WebService?

Estas en el tema de Como regresar un datatable desde un WebService? en el foro de ASPX (.net) en Foros del Web. Hola, Basicamente lo que quiero hacer es que un webservice me regrese un datatable para que con este yo pueda llenar un grid, es decir ...
  #1 (permalink)  
Antiguo 05/10/2012, 10:49
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Como regresar un datatable desde un WebService?

Hola,
Basicamente lo que quiero hacer es que un webservice me regrese un datatable para que con este yo pueda llenar un grid, es decir con el datatable retornado por el Servicio web.
Les muestro mi codigo del WS:
Código ASP:
Ver original
  1. [WebService(Namespace = "http://tempuri.org/")]
  2. [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
  3.  
  4.  
  5. // [System.Web.Script.Services.ScriptService]
  6. public class WebService : System.Web.Services.WebService {
  7.     string conexion = ConfigurationManager.ConnectionStrings["conexion"].ToString();
  8.     public WebService () {
  9.  
  10.         //Eliminar la marca de comentario de la línea siguiente si utiliza los componentes diseñados
  11.         //InitializeComponent();
  12.     }
  13.  
  14.     [WebMethod]
  15.     public DataTable FillGrid() {
  16.         string query = "SELECT * FROM EMPLEADOS";
  17.         DataTable dt = new DataTable();
  18.         SqlDataAdapter da = new SqlDataAdapter(query, conexion);
  19.  
  20.         da.Fill(dt);
  21.         return dt;
  22.        
  23.    
  24.  
  25.  
  26.     }
  27.    
  28. }
Cuando lo ejecuto y lo invoco me retorna:
Código:
System.InvalidOperationException: There was an error generating the XML document. ---> System.InvalidOperationException: Cannot serialize the DataTable. DataTable name is not set.
   at System.Data.DataTable.WriteXmlSchema(XmlWriter writer, Boolean writeHierarchy)
   at System.Data.DataTable.System.Xml.Serialization.IXmlSerializable.WriteXml(XmlWriter writer)
   at System.Xml.Serialization.XmlSerializationWriter.WriteSerializable(IXmlSerializable serializable, String name, String ns, Boolean isNullable, Boolean wrapped)
   at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write1_DataTable(Object o)
   at Microsoft.Xml.Serialization.GeneratedAssembly.DataTableSerializer.Serialize(Object objectToSerialize, XmlSerializationWriter writer)
   at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
   --- End of inner exception stack trace ---
   at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
   at System.Xml.Serialization.XmlSerializer.Serialize(TextWriter textWriter, Object o, XmlSerializerNamespaces namespaces)
   at System.Web.Services.Protocols.XmlReturnWriter.Write(HttpResponse response, Stream outputStream, Object returnValue)
   at System.Web.Services.Protocols.HttpServerProtocol.WriteReturns(Object[] returnValues, Stream outputStream)
   at System.Web.Services.Protocols.WebServiceHandler.WriteReturns(Object[] returnValues)
   at System.Web.Services.Protocols.WebServiceHandler.Invoke()
Pueden ayudarme pleasee!!!? :(
  #2 (permalink)  
Antiguo 05/10/2012, 15:31
Avatar de DeivisAndres  
Fecha de Ingreso: febrero-2012
Ubicación: Colombia
Mensajes: 305
Antigüedad: 12 años, 2 meses
Puntos: 41
De acuerdo Respuesta: Como regresar un datatable desde un WebService?

Hola th3r0rn.
Por que no miras esta pagina que te explica como se debe hacer: DataTable in Web Service

Como puedes ver en la pagina el te dice que: "En el mensaje, podemos encontrar que DataTable no es serializable. O en otras palabras, como DataTable no implementa la interfaz ISerializable. No se puede utilizar como un tipo de valor devuelto de un método webserivice. Alternativamente, crear su propia clase que hereda la interfaz ISerializable. Y pasan los datos mediante el objeto recién creado. O crear los datos en formato XML y pasarlo como una cadena."
  #3 (permalink)  
Antiguo 05/10/2012, 15:49
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Como regresar un datatable desde un WebService?

Lo que no entiendo es como voy a crear el formato a XML si primero necesito extraer los datos desdede la base de datos y por supuesto me los regreasra en un datatable, no encuentro alguna otra formade traer los adatos, auq primero tengo traer el datatable para despues trabajar estos datos a XML. Literalmente sale lo mismo no?
O deberia buscar alguna forma de que me regrese los datos en xml? lo veo dificil
  #4 (permalink)  
Antiguo 05/10/2012, 15:59
Avatar de DeivisAndres  
Fecha de Ingreso: febrero-2012
Ubicación: Colombia
Mensajes: 305
Antigüedad: 12 años, 2 meses
Puntos: 41
De acuerdo Respuesta: Como regresar un datatable desde un WebService?

Mira dale una ojeada a estas paginas que te dicen lo que tratas de hacer y si se puede. A demas muchos utilizan DataSet en lugar del DataTable. Aqui te dejo los link:

ASPX .NET Web Service, DataTable devuelto como arreglo de objetos al cliente
Problemas al utilizar un servicio Web XML devuelve un objeto DataTable
B]Consume .Net Web Service Using Jquery[/B]
jQuery Datatable using webservice
DataTable JSON Serialization in JSON.NET and JavaScriptSerializer
Consuming a DataSet from an XML Web Service

Como puedes ver a muchas maneras de retornar un DataTable desde un WebService. Espero y te sirva... En el segundo link te pueda servir mucho...

Última edición por DeivisAndres; 05/10/2012 a las 16:55

Etiquetas: datatable, regresar, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 04:00.