Use ObjectDataSource + LINQ Achieve CRUD in WebForm

Use ObjectDataSource + LINQ Achieve CRUD in WebForm

ObjectDataSource 用來綁定 GridView,不會破壞架構的彈性,本篇將簡單實作集合物件的 CRUD

本篇章節

@EmployeeDataAccess.cs,設定 DAO 物件

@default.aspx - 設定 ObjectDataSource

@default.aspx - 設定 GridView(Select/Update/Delete)

@default.aspx - 設定 DetailsView(Insert)

 


 

@EmployeeDataAccess.cs,設定 DAO 物件

要讓 ObjectDataSource Designer 能明確指定物件成員,有兩個步驟

  1. 在類別上加上 [DataObject(true)]
  2. 在方法加上 [DataObjectMethod(DataObjectMethodType.Select)] | [DataObjectMethod(DataObjectMethodType.Update)] | [DataObjectMethod(DataObjectMethodType.Delete)]

image

 

若沒有指定 Atturibute ,在 ObjectDataSource Designer  選擇成員時,比較沒那麼精準,方法越多下拉選單就越長


 
image

 

完成 DAO後,建置方案

EmployeeDataAccess 程式碼請參考

https://dotblogsamples.codeplex.com/SourceControl/latest#Simple.ObjectDataSourceBinding/Simple.ObjectDataSourceBinding/Models/EmployeeDataAccess.cs

 


 

@default.aspx - 設定 ObjectDataSource

方案建置成功後,就可以來設定 ObjectDataSource

image

 

定義 Select / Update / Insert / Delete

image

 

原始碼如下

https://dotblogsamples.codeplex.com/SourceControl/latest#Simple.ObjectDataSourceBinding/Simple.ObjectDataSourceBinding/default.aspx

@default.aspx - 設定 GridView(Select/Update/Delete)

GridView 的 DataSourceID 則套用 ObjectDataSource

 

 

 

 

image

 

設定 DataKeyNames,當前端 Postback 到後端所需要帶的欄位,這裡我列了4個欄位

image

 

當我按下 Delete ,在後端看到的資料

image

 

原始碼如下

https://dotblogsamples.codeplex.com/SourceControl/latest#Simple.ObjectDataSourceBinding/Simple.ObjectDataSourceBinding/default.aspx

@default.aspx - 設定 DetailsView(Insert)

新增,我則是使用 DetailsView,行為則是選 DefaultMode="Insert"

image

 

原始碼如下

https://dotblogsamples.codeplex.com/SourceControl/latest#Simple.ObjectDataSourceBinding/Simple.ObjectDataSourceBinding/default.aspx


本文出自:http://www.dotblogs.com.tw/yc421206/archive/2014/11/13/147293.aspx

範例下載:https://dotblogsamples.codeplex.com/SourceControl/latest#Simple.ObjectDataSourceBinding/

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2021 .NET

Image result for microsoft+mvp+logo