2011-03-03 53 views
0

我用了一個WCF REST模板建立一個WCF服務庫來創建PUT和GET調用。 PUT方法很好地將我的blob發送到數據庫。
在GET,我希望能夠直接從存儲過程訪問Web服務並顯示結果數據集並綁定這一個gridview。該存儲過程是一個簡單的SELECT語句,返回三位來自表中的四列。我有以下內容:數據集綁定到GridView的WCF REST檢索方法和LINQ內到SQL

[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; 
} 

我還將Linq添加到SQL類以包含我的數據庫表和存儲過程訪問。除了其他必需的文件外,我還創建了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 web服務一個GET返回的XML。但是我仍然對如何將這個XML數據綁定到一個gridview感到困惑。什麼是最好的方法?..我應該創建另一個ASP.NET網站項目作爲一個客戶端來消費這個Web服務(所以我可以得到default.aspx),或者有一種方法可以在與WCF相同的項目中執行此操作Web服務項目?請幫忙.. – Jai 2011-03-04 15:23:07

相關問題