【问题标题】:Dataset bind to Gridview within WCF REST retrieval method and Linq to Sql数据集在 WCF REST 检索方法和 Linq to Sql 中绑定到 Gridview
【发布时间】:2011-04-30 11:08:43
【问题描述】:

我使用 WCF REST 模板构建 WCF 服务库来创建 PUT 和 GET 调用。 PUT 方法可以很好地将我的 blob 发送到数据库。
在 GET 上,我希望能够直接访问 Web 服务并将存储过程的结果显示为数据集,并将其绑定到 gridview。存储过程是一个简单的选择语句,从表中返回四列中的三列。我有以下内容:

[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() 的返回类型应该是什么?我被这个困住了。请提供有关如何执行此操作的帮助。

【问题讨论】:

    标签: c# wcf gridview dataset webget


    【解决方案1】:

    首先,为什么你有对象列表而不是自定义类/类型或数据表? 然后,返回 0,我宁愿设置返回新的List&lt;Object&gt; 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>();  
    }
    

    【讨论】:

    • 感谢您的示例,不胜感激。我现在可以看到在 WCF Web 服务上执行 GET 时返回的 XML。但我仍然对如何将此 XML 数据绑定到 gridview 感到困惑。什么是最好的方法?..我应该创建另一个 ASP.NET 网站项目作为客户端来使用这个 web 服务(这样我就可以掌握 default.aspx),或者有没有办法在与 WCF 相同的项目中做到这一点网络服务项目?请帮忙..
    猜你喜欢
    • 1970-01-01
    • 2011-01-11
    • 1970-01-01
    • 2012-04-20
    • 1970-01-01
    • 2015-09-07
    • 2010-11-03
    • 1970-01-01
    • 2011-07-09
    相关资源
    最近更新 更多