如何使用带有ASP.NET DataGrid的存储过程

时间:2009-04-06 03:07:39

标签: asp.net database linq ado

问题还可以是:

调用存储过程来填充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的方法   过程并返回一个填充的数据网格,或数据网格,如数据表示模型?

2 个答案:

答案 0 :(得分:2)

我建议使用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类中设置存储过程,方法是将其拖放到设计图面上。

希望有所帮助。

答案 1 :(得分:1)

使用SqlDataSource是最直接的方法。如果要隔离业务层中的所有数据库调用,则只需创建一个调用存储过程的ObjectDataSource即可。虽然在这里可能感觉有些过分,但这是一项非常有用的技能,并且一旦你掌握了它,非常很容易实现。

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

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