- ASP.NET項目開發全程實錄(第4版)
- 明日科技
- 1868字
- 2019-12-06 12:04:46
2.8 商品庫存管理模塊設計
2.8.1 商品庫存管理模塊概述
在電子商務系統中對商品信息的管理十分重要,一個好的電子商務系統必須要有一個強大的商品庫存管理模塊。電子商務網站系統的商品庫存管理模塊主要實現對商品信息的管理,包括對商城商品信息和商品類型信息的查詢、添加、修改和刪除功能。
當用戶通過后臺身份驗證后,進入網站后臺管理模塊,單擊展開菜單欄中的“庫存管理”,然后點擊管理按鈕,將會在功能執行區中打開如圖2.28所示的商品管理界面。在該界面的功能管理中,用戶可以根據實際需要查詢、瀏覽、修改和刪除商品信息;而當單擊“商品添加”按鈕時用戶可以根據實際需要添加商品信息。同樣,對商品類別的管理與添加類似。

圖2.28 對添加的商品進行管理
2.8.2 商品庫存管理模塊技術分析
商品管理界面中在顯示商品“所屬類別”和商品“熱銷價”時,主要應用了數據綁定表達式。
在ASP.NET中主要應用的是DataBinder.Eval方法,該方法是一個完全成熟的方法,可以在程序中的任何地方使用。
DataBinder.Eval方法的語法如下:
<%# DataBinder.Eval(Containter.DataItem, expression) %>
Containter.DataItem表達式引用對該表達式進行計算的對象。該表達式通常是一個字符串,表示數據項對象上要訪問的字段的名稱。它可以是一個包括索引和屬性名的表達式。DataItem屬性表示當前容器上下文中的對象。容器通常是即將生成的數據項對象的當前實例。
在ASP.NET中,只要是ASP.NET 1.x中接受DataBinder.Eval方法的地方,就可以使用如下表達式:
<%# Eval(expression) %>
可以看出,ASP.NET 4.5也是完全支持DataBinder對象的。ASP.NET 4.5中的Eval方法是建立在DataBinder.Eval方法之上的一個簡單包裝。該方法代表一種單向數據綁定,它實現了數據讀取的自動化,但是沒有實現數據寫入自動化。如果要實現雙向的數據綁定,可應用ASP.NET 4.5中另一個新的數據綁定方法,即Bind方法讀寫數據項屬性。
2.8.3 商品庫存管理模塊實現過程
本模塊使用的數據表:tb_BookInfo、tb_Detail
1. 設計步驟
(1)在應用程序中創建一個名為Manage的文件夾,在該文件夾下創建一個Web窗體,將其命名為Product.aspx。
(2)通過使用bootstrap+div為整個頁面進行布局。從“工具箱”選項卡中拖放一個TextBox控件、一個Button控件和一個GridView控件。Product.aspx各個控件的屬性設置如表2.6所示。
表2.6 Product.aspx頁中各個控件的屬性設置

2. 代碼實現
在后臺代碼頁(Product.aspx.cs)中編寫代碼前,首先需要定義CommonClass類對象、DBClass類對象和GoodsClass類對象,以便在編寫代碼時,調用該類中的方法。代碼如下:
例程28 代碼位置:資源包\TM\02\B2C\B2C\Manage\ProductAdd.aspx.cs
CommonClass ccObj = new CommonClass(); DBClass dbObj = new DBClass(); GoodsClass gcObj = new GoodsClass();
在Page_Load事件中,調用自定義方法gvBind,顯示商品信息。代碼如下:
例程29 代碼位置:資源包\TM\02\B2C\B2C\Manage\Product.aspx.cs

自定義方法gvBind,首先從商品信息表(tb_BookInfo)中獲取商品信息,然后將獲取的商品信息綁定到GridView控件中。代碼如下:
例程30 代碼位置:資源包\TM\02\B2C\B2C\Manage\Product.aspx.cs

代碼貼士
?GetDataSetStr:調用公共類中的GetDataSetStr方法,執行SQL語句,返回一個數據源的數據表。
?DefaultView:該對象為DataTable的一個默認視圖,并將其值賦予GridView控件的數據源對象DataSource。
?DataKeyNames:該屬性為GridVeiw控件獲取一個包含當前顯示項的主鍵字段的名稱數組。
當用戶輸入關鍵信息后,單擊“搜索”按鈕,將會觸發該按鈕的Click事件。在該事件下,調用自定義方法gvSearchBind綁定查詢后的商品信息。代碼如下:
例程31 代碼位置:資源包\TM\02\B2C\B2C\Manage\Product.aspx.cs

自定義方法gvSearchBind,調用GoodsClass類的search方法,查詢符合條件的商品信息,并將其綁定到GridView控件上。代碼如下:
例程32 代碼位置:資源包\TM\02\B2C\B2C\Manage\Product.aspx.cs在GridView控件的RowDeleting事件下,編寫如下代碼,實現當用戶單擊某個商品后的“刪除”按鈕時,將該商品從商品信息表中刪除。

例程33 代碼位置:資源包\TM\02\B2C\B2C\Manage\Product.aspx.cs

當用戶單擊GridView控件中的“詳細信息”按鈕時,將會跳轉到詳細信息頁面。在該頁面中,用戶可以查看并修改商品信息。
說明
商品信息修改頁的代碼并不復雜,由于篇幅有限,請讀者參見本書隨帶的資源包。
在GridView控件中,“所屬類別”和“熱銷價”的綁定列數據應用了數據表達式DataBinder.Eval方法,其代碼編寫需將頁面切換到HTML源代碼中。代碼如下:
例程34 代碼位置:資源包\TM\02\B2C\B2C\Manage\Product.aspx

代碼貼士
?綁定商品類別號,并通過后臺代碼中的公共方法GetClassName獲取類別名。
?綁定商品最新價,并通過后臺代碼中的公共方法GetVarStr獲取最新商品價格。
2.8.4 單元測試
在編寫該模塊時,當單擊商品管理頁面中的表格控件GridView中的商品“詳細信息”列時,如圖2.29所示,鏈接到修改該商品信息的EditProduct.aspx頁。如圖2.30所示,輸入相關的修改數據后,單擊“修改”按鈕時,將會彈出“修改成功!”對話框,但在表格控件GridView中指定修改的商品信息并沒有變,數據中存在的數據也沒有跟著更改,通過檢查相應的更新SQL語句沒有任何錯誤。

圖2.29 商品管理頁

圖2.30 商品信息修改頁
應用程序中編寫的代碼如下。
在頁面Page_Load事件中,綁定相應的數據庫信息。代碼如下:

在EditProduct.aspx頁中雙擊“修改”按鈕,觸發其Click事件。代碼如下:

通過查找錯誤出處和相關技術方面的分析,發現在頁面Page_Load事件中,沒有判斷頁面是不是第一次加載,沒有應用IsPostBack屬性,該屬性主要用于判斷頁面是否首次加載,并當用戶修改相應信息數據時刷新頁面。正確編寫代碼如下:

- 網絡工程設計與安裝
- ASP.NET Core 3 框架揭秘(上下冊)
- CSS3網頁設計從入門到精通(微課精編版)
- pfSense 2.x Cookbook
- 華為云計算HCIA實驗指南(第二版)
- 監控平臺解密:IT系統風險感知和洞察
- ns-3網絡模擬器基礎及應用
- Axure RP 9 高保真原型設計實例教程
- Cisco Unified Communications Manager 8:Expert Administration Cookbook
- 綜合布線實訓教程(第2版)
- 十進制網絡技術及應用
- 云原生應用管理:原理與實踐
- 開源云計算平臺CloudStack實戰
- ASP.NET框架應用程序實戰:軟件開發工程師崗前必備
- Linux環境編程