2010-12-05 26 views
5

Tengo un método de servicio web que me gustaría devolver varias filas de una tabla de datos.devolver varias filas de un servicio de asmx

Estoy familiarizado con la devolución de valores de los métodos del servicio web pero no con las filas múltiples de una tabla de datos. ¿Cuál es la mejor manera de hacer esto? ¿Debo devolver una matriz o list<>?

El método de mi código se configura así.

[WebMethod] 
public void UpdateBold(int count, float lat, float lng) 
{ 
DataTable dt = new Gallery().DisplayNearestByLatLong(count, lat, lng); 

// return code here 
} 
+0

que había actualizado la respuesta a su llamada AJAX. deberías hacer que tu servicio sea serializado. –

+0

No aprecio que haya aceptado la respuesta de Saaed cuando la mía era más detallada. –

Respuesta

8

Puede crear nuevo tipo para su artículo tabla de datos y return array de estos datos

public class sample 
    { 
     public string val1; 
     public string val2; 

    } 
[WebMethod] 
public sample[] UpdateBold(int count, float lat, float lng) 

{ 

      DataTable dt = new Gallery().DisplayNearestByLatLong(count, lat, lng); 
      var samples = new List<sample>(); 

      foreach(DataRow item in dt.Rows) 
      { 
       var s = new sample(); 
       s.val1 = item[0].ToString(); 
       s.val2 = item[1].ToString(); 
       samples.Add(s); 
      } 
      return samples.ToArray(); 
} 

para Ajax:

para consumir ver http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/ pero usted debe hacer su servicio web para serializar JSON, para este ver http://msdn.microsoft.com/en-us/library/bb763183.aspx

+0

Eso parece prometedor. Intento consumir esto usando JSON en jquery pero no está funcionando. ¿Sabes cómo voy a trabajar eso? ¿O alguna otra forma de probarlo? $ .ajax ({ tipo: "POST", url: "../../../WebServices/Gallery.asmx/Test", // datos: "{count: '" + recuento + "', lat:'" + lat + "', lng:'" + long + "'}", contentType: "application/json; charset = utf-8", dataType: "json", éxito : function (msg) { alert (msg.d); // test (msg); } }); – tmutton

+0

@codemonkey, si no resolvió su problema JSON, simplemente puede probar este servicio con la aplicación win. –

+0

Solucioné el problema con mi jquery, gracias :-) – tmutton

6

Devolvería una matriz de DTO livianos.

Ex, DTO:

public class Example 
{ 
    public string Name { get; set; } 
    public int Value { get; set; } 
} 

Y, en su tela serivce:

[WebMethod] 
public Example[] GetExamples() 
{ 
     return new Example[]{ 
      new Example { Name = "Test", Value = 100 }, 
      new Example { Name = "Test 2", Value = 500 } 
     };  
} 
+0

@Saeed: Data Transfer Object –

+0

No, no, no, sé de DTO, pero dejé este comentario por su comentario para OP, 'por qué OP no marca su respuesta como respuesta', en mi humilde opinión su respuesta no es más detalle de lo que dije. Eliminé el comentario anterior :) –

Cuestiones relacionadas