2010-12-05 21 views
5

Veri çubuğundan birden çok satır döndürmek istediğiniz bir web hizmeti yöntemim var.asmx hizmetinden birden fazla satır döndürme

Web hizmet yöntemlerinden dönen değerlere aşina değilim, ancak bir veri kümesinden birden fazla satır tanımıyorum. Bunu yapmanın en iyi yolu nedir? Bir dizi döndürmek mi yoksa list<> mu?

Kod yöntemim şunun gibi kuruldu.

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

// return code here 
} 
+0

bakınız için webservice, JSON seri hale getirmek için yapmalıdır. Servis jsonunu serileştirmelisin. –

+0

Benimki daha detaylı olduğunda, Saaed'in cevabını kabul ettiğinizi takdir etmeyin. –

cevap

8

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(); 
} 
Ajax için

: tüketen içinhttp://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/ görürseniz ancak bu senin ajax çağrısı için cevap güncellenmiş vermişti http://msdn.microsoft.com/en-us/library/bb763183.aspx

+0

Bu umut verici görünüyor. JSO kullanarak jQuery kullanarak bunu tüketmeye çalışıyorum ama çalışmıyor. Nasıl çalışacağımı biliyor musun? Ya da test etmek için başka bir yolu? $ .ajax ({ türü: "POST", url: "../../../WebServices/Gallery.asmx/Test", // veriler: "{count: '" + sayım + "', lat:'" + lat + "', lng:'" + uzun + "'}", contentType: "application/json; charset = utf-8", dataType: "json", başarı : işlev (msg) { uyarısı (msg.d); // sınama (msg); } }); – tmutton

+0

@codemonkey, JSON sorununuzu çözmediyseniz, bu hizmeti win uygulamasıyla test edebilirsiniz. –

+0

Sorunu jquery'imle çözdüm, teşekkürler :-) – tmutton

6

Bir dizi hafif DTO'yu iade ediyorum.

Ör, DTO:

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

Ve web sunumlarına ulaşmaktasınız içinde

: Eğer veri tablosu öğesi için yeni bir tür oluşturmak ve bu veriler dizisi dönebilirsiniz

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

@Saeed: Veri Aktarımı Nesnesi –

+0

Hayır hayır, DTO'yu biliyorum, ancak OP'ye yaptığınız yorum nedeniyle bu yorumu bıraktım, 'OP neden cevabınızı cevap olarak işaretlemiyor?', IMHO cevabınız daha fazla değil dediğimden daha detay. Önceki yorumu kaldırdım :) –

İlgili konular