ASP.NET 4.0 Entity DataSource and GridView September 27, 2009Posted by fofo in ASP.NET 4.0, c# 4.0, Visual Studio 2010.
Tags: .Net 4, ASP.NET 4.0, entity datasource, Entity framework, Visual Studio 2010
Recently I had the time to examine thoroughly my blog stats. From that it was evident people liked a lot the posts regarding the new features in .Net 4.0. So in this post I am going to discuss the new Entity DataSource web server control which is similar to the LINQ to SQL DataSource, except it allows you to use your Entity Framework data object model instead. I will also demonstrates the new features of the GridView control. I have talked about EF and how to build an application with EF and C# in one of my previous posts. In this post I will talk more about the Entity Datasource object and enhancements made in the GridView control.
I will create a sample website as always so it is easier for you to understand.In order to follow along you must have installed in your PC VS 2010 and the .NET 4.0 framework.Obviously we are going to need a data store for our application. I will use the AdventureWorksLt which you can download from this site .
1) Launch Visual Studio 2010 and create a new web site.
2) Choose Asp.Net application from the available templates and C# as the development language
3) You now have your files in the Solution Explorer window.
4) Choose the default.aspx page and go to your Toolbox and under the Data Controls drag and drop an Entity Datasource control on the page.
5) Now you need an Entity Data model that the Entity Datasource can bind to. In the Solution Explorer add (right-click) a new special folder , App_Code
6) Select the App_Code and add a new item(right-click) , ADO.NET Entity Data Model.Leave the default name.
7) In the next window select “Generate from database” and click Necxt.
8) In the next window of the Entity model wizard create a new connection to you database (AdventureWorksLT)or select an existing connection that points to the same db.
9) Save the entity connection settings in the web.config file
10) Click Next on the wizard window. From all the available db objects we want to include in our model only tables and more specifically only the Products table.
11) Select the table and click Finish. So now we have a Product Entity with all the mappings to the database.
12) Select the Entity Datasource control and click the arrow on the right-top corner and select Configure Data Source.
13) Select in the Named Connection option of the wizard and select the AdventureWorkLTEntities and click Next
14) In the EntitySetName select Product and from the available Entity values select ProductID,Name,ListPrice,Size,Weightand and click Finish.
15) Drag and drop on the default.aspx page a Gridview control (control in your Toolbox data controls area).Give it some formatting from the AutoFormat options
16) Set the datasource of the Gridview control to the Entity datasource.
17) Enable Sorting,Paging and Selection for the Gridview control
18) Run your application by hitting F5 from your keyboard. If everything is ok you will be able to see a list of products in your page.
The imporevement in the GridView control is about selecting rows.If you selected an item in GridView(the third one for example) and then browsed through the pages the third item in every page will also be selected. That was not always what we wanted. The GridView control did that based on an index it had and used to find the third item on that page.
We can overcome that by enabling the EnablePersistenSelection property and setting it to True.
Then we need to select the DataKeynames property and set it to ProductID.
19) Now if run our application again and select a product in the first page(6th product), and browse through the pages the product in position 6(index 6) is not selected anymore.Now the selection is made over the underlying primary key and not the index in the view of the GridViewControl
Hope it helps!!!
If you need the source code just email me or just comment on this post.