2011-03-03 1 views
0

WCF REST 템플릿을 사용하여 PUT 및 GET 호출을 만드는 WCF 서비스 라이브러리를 작성했습니다. PUT 메서드는 내 blob을 데이터베이스로 잘 보냅니다.
GET에서 웹 서비스에 직접 액세스하여 저장 프로 시저의 결과를 데이터 집합으로 표시하고이를 gridview에 바인딩하려고합니다. 저장 프로 시저는 간단한 select 문으로 테이블에서 4 개의 열 중 3 개를 반환합니다.WCF REST 검색 메서드 내에서 Gridview에 대한 데이터 집합 바인딩 및 SQL에서 Linq

[WebGet(UriTemplate = "/?name={name}", ResponseFormat = WebMessageFormat.Xml)] 
public List<Object> GetCollection(string name) 
{ 
     try 
     {  
       db.OpenDbConnection(); 
      // Call to SQL stored procedure 
       return db.GetCustFromName(name); 
     } 
     catch (Exception e) 
     { 
      Log.Error("Stored Proc execution failed. ", e); 
     } 
     finally 
     { 
      db.CloseDbConnection(); 
     } 
     return null; 
} 

나는 또한 내 데이터베이스 테이블 및 저장 프로 시저 액세스를 포함하는 SQL 클래스 Linq에 추가 : 나는 다음 있습니다. 다른 필수 파일 외에도 Default.aspx 파일을 만들었습니다.

protected void Page_Load(object sender, EventArgs e) 
{ 
     ServiceDataContext objectContext = new ServiceDataContext();    
      var source = objectContext.GetCustFromName("Tiger"); 
      Menu1.DataSource = source; 
      Menu1.DataBind(); 
} 

그러나이 나에게 엔티티 유형을 '준다'는 등록되어 모든 모델에 속해 있지 않습니다.

어디에서 데이터 바인딩을 수행해야합니까? GetCollection()의 반환 형식은 무엇입니까? 나는 이것에 붙어있다. 이를 수행하는 방법에 대한 도움을주십시오.

답변

0

우선, 사용자 지정 클래스/유형 또는 데이터 테이블이 아닌 개체 목록이있는 이유는 무엇입니까? 그리고 나서 0을 반환하고 새로운 값을 반환하도록 설정합니다. List<Object> sp는 데이터 집합이나 데이터 테이블을 반환합니다.

먼저 custommer에 대한 클래스를 생성 :이 같은

class Custommer 
    { 
     private int gID; 
     private string gName; 

     public int ID 
     { 
      get 
      { 
      return gID; 
      } 
      set 
      { 
      gID=value; 
      } 
     } 

     public string Name 
     { 
      get 
      { 
      return gName; 
      } 
      set 
      { 
      gName=value; 
      } 
     } 
     ... 
    } 

그리고 뭔가 : 예에 대한

[WebGet(UriTemplate = "/?name={name}", ResponseFormat = WebMessageFormat.Xml)] 
public List<Custommer> GetCollection(string name) 
{ 
     try 
     {  
      db.OpenDbConnection(); 
      // Call to SQL stored procedure   
       DataTable vDT = db.GetCustFromName(name); 

       //Create a new list of custommer 
       List<Custommer> vListOfCustommer = new List<Custommer>(); 

       //loop all row from the sp from database. 
       foreach (DataRow r in vDT) { 
        Custommer vCustommer = new Custommer(); 
        vCustommer.ID =r["ID"]; 
        vCustommer.Name= r["Name"]; 

        vListOfCustommer.add(vCustommer); 
       } 
       // return list of custommer 
       return vListOfCustommer; 
     } 
     catch (Exception e) 
     { 
      Log.Error("Stored Proc execution failed. ", e); 
     } 
     finally 
     { 
      db.CloseDbConnection(); 
     } 
     return new List<Custommer>(); 
} 
+0

감사합니다, 그것을 주셔서 감사합니다. 이제 WCF 웹 서비스에서 GET 할 때 반환되는 XML을 볼 수 있습니다. 그러나 나는이 XML 데이터를 gridview에 바인딩하는 방법에 대해 여전히 혼란 스럽다. 가장 좋은 접근 방법은 무엇입니까? ..이 웹 서비스를 사용하는 클라이언트로 다른 ASP.NET 웹 사이트 프로젝트를 만들어야합니다 (그래서 default.aspx를 가져올 수 있습니다). 또는 WCF와 동일한 프로젝트에서이 작업을 수행 할 수있는 방법이 있습니다. 웹 서비스 프로젝트? 도와주세요.. – Jai

관련 문제