【问题标题】:How to use Stored Procedures w/ ASP.NET DataGrid如何使用带有 ASP.NET DataGrid 的存储过程
【发布时间】:2009-04-06 03:07:38
【问题描述】:

问题也可以是:

调用存储过程来填充 DataGrid 的首选方式是什么?

我目前正在开发一个 ASP.NET 页面,我想知道 Linq 是否适合用于我的 SQL Server DB。

ADO 看起来也不错,所以我想就一般而言最合适的内容提供反馈..

LINQ 确实使调用存储过程变得容易,但我一直在努力寻找将结果集从存储过程放入数据网格的正确方法。

不要以为我想做一个 foreach 那里..但是所有的例子似乎都指向那个方向..或者我只是困惑

I have read this blog postthis one,似乎要走的路是 foreach 和 Ienumerable 方法..我对整个事情有点困惑。

我也在考虑tutorial for creating a Movie DataBase,在这种情况下,DataGrid 就变得不必要了。

什么是最简单的,最适合 访问简单 SQL 的点方法 过程并返回一个填充的数据网格,或类似数据网格的数据表示模型?

【问题讨论】:

    标签: asp.net database linq ado


    【解决方案1】:

    我建议使用 Linq to SQL。你认为你不应该使用任何 foreach 循环是正确的——你所需要的只是数据绑定。

    例如。在您后面的代码中,您可能有一个执行以下操作的 DataBind 事件:

    protected void GridView1_DataBanding(object sender, EventArgs e)
    {
                // Get an instance of our generated DataContext class.
                DAL.AdventureWorks db =
                    new DAL.AdventureWorks(
                        WebConfigurationManager.ConnectionStrings["AdventureWorksCS"].ConnectionString);
    
                // Get a strongly typed List from the Stored Procedure output
                List<DAL.MySPResult> myData = db.MySP().ToList();
    
                GridView1.DataSource = myData;
    }
    

    您需要在 Linq to SQL 类中设置您的存储过程,方法是将其拖到设计图面上。

    希望对您有所帮助。

    【讨论】:

    • 谢谢!我的主要问题是我没有包括 Linq..所以 List() 的选项不在 Intelisense 中......谢谢,现在一切都很好。
    【解决方案2】:

    使用 SqlDataSource 是最直接的方法。如果您在业务层中隔离所有数据库调用,那么您可以简单地创建一个调用存储过程的 ObjectDataSource。虽然在这里可能感觉有点矫枉过正,但这是一项有用的技能,非常一旦你掌握了它就很容易实现。

    如果您将使用数据绑定控件,您真的不需要 LINQ 或 foreach 等,因为您不需要手动填充它(这就是数据绑定的全部内容)。

    还有一件事 - 我会强烈建议您使用 GridView 而不是 DataGrid;它更新,具有更多自动化功能,并且是更强大和更有吸引力的控件。如果您需要任何示例代码,请告诉我。

    【讨论】:

      猜你喜欢
      • 2020-02-18
      • 1970-01-01
      • 1970-01-01
      • 2021-10-29
      • 1970-01-01
      • 1970-01-01
      • 2011-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多