




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、-購貨車與訂單 模塊 電子商務(wù)網(wǎng)站規(guī)劃與實現(xiàn)購貨車與訂單 傳統(tǒng)觀念中的商店除必需有商品以外,還需求有店房、門面和貨架等。而網(wǎng)上商店主要依托網(wǎng)絡(luò)技術(shù)來完成商品展現(xiàn)、訂購以及支付等項任務(wù),網(wǎng)上商店既沒有店房、門面也沒有貨架,因此網(wǎng)上商店常被稱之為“虛擬商店。人們到超級商場去購買東西時,總得先將想買的商品從貨架上取下來,放到購貨車中,然后集中起來一同算賬、付款。網(wǎng)上商店模擬這個購物過程,先讓客戶從不同的網(wǎng)頁中選取商品,并將這些商品集中到“購貨車中一同算賬,最后生成完好的訂單。網(wǎng)上購貨車不同于實踐的購貨車,它是一種虛擬構(gòu)造,稱為“虛擬購貨車?!疤摂M購貨車和“訂單是商品采購中的中心部分,創(chuàng)建虛擬購貨車和
2、訂單是一門綜合技術(shù),可以采用多種方式。下面將要運用的技術(shù)包括:利用用戶控件和主控頁進展界面設(shè)計;實現(xiàn)數(shù)據(jù)表多表之間的同步;完成對數(shù)據(jù)表的顯示、修正和統(tǒng)計。除此以外,還要動態(tài)生成內(nèi)存中的數(shù)據(jù)表以及運用Session對象保管數(shù)據(jù)并在網(wǎng)頁之間進展傳送等。因此本章講述的內(nèi)容是前面多章內(nèi)容的綜合運用。 購貨車與訂單 概 述 設(shè)計用戶控件及主控頁 設(shè) 計 主 頁 產(chǎn)品類型與產(chǎn)品目錄之間同步 選 擇 商 品 顯示購貨車 結(jié) 賬 保 存 訂 單 查 看 訂 單 小 結(jié) 1 概 述 u1 Northwind樣板庫簡介 u2 本系統(tǒng)的功能 u3 主要數(shù)據(jù)表的構(gòu)造及其他預(yù)備任務(wù) 1 Northwind樣板庫簡介 S
3、QL Server提供的Northwind樣板庫是一個虛擬的國外食品公司的數(shù)據(jù)庫,我們將利用這個數(shù)據(jù)庫(加以簡化)來創(chuàng)建本人的購貨車與訂單。下面先對Northwind樣板庫做一個簡單的引見。Northwind樣板庫包括十幾張數(shù)據(jù)表,各表的關(guān)聯(lián)以及數(shù)據(jù)表中各字段。Northwind樣板庫的數(shù)據(jù)表包括以下4部分。訂單部分:包含訂單表(Orders)、訂單細(xì)目(Order Details)、訂單發(fā)貨(Shippers)。產(chǎn)品部分:包括類型表(Categories)、產(chǎn)品表(Products)、產(chǎn)品提供者(Suppliers)。雇員信息部分:包括有關(guān)雇員(Employees)的4張表。顧客信息:包括顧
4、客表(Customers)等。本設(shè)計將集中與訂單相關(guān)的部分,除此以外還需求在數(shù)據(jù)庫中自行建立一個簡化的訂單表,訂單表的構(gòu)造將在下面講述。 1 Northwind樣板庫簡介圖 Northwind樣板庫中數(shù)據(jù)表的構(gòu)造及相互關(guān)系 2 本系統(tǒng)的功能 2 本系統(tǒng)的功能 2 本系統(tǒng)的功能 了解系統(tǒng)的關(guān)鍵是搞清了解系統(tǒng)的關(guān)鍵是搞清GridView、內(nèi)存數(shù)據(jù)表與、內(nèi)存數(shù)據(jù)表與Session對象三者之間的關(guān)對象三者之間的關(guān)系。系統(tǒng)的執(zhí)行過程是:進入系。系統(tǒng)的執(zhí)行過程是:進入“主界面主界面(主頁面這里沒有畫主頁面這里沒有畫),顯示商品分類,顯示商品分類,以及歡迎界面;在分類數(shù)據(jù)表以及歡迎界面;在分類數(shù)據(jù)表(Cat
5、egories)中任選一種數(shù)據(jù)類型,同步翻開中任選一種數(shù)據(jù)類型,同步翻開“產(chǎn)品產(chǎn)品.aspx網(wǎng)頁,用網(wǎng)頁,用GridView控件分類顯示控件分類顯示Products數(shù)據(jù)表中相應(yīng)的商品;數(shù)據(jù)表中相應(yīng)的商品;單擊想要購買的商品,將該商品的數(shù)據(jù)取出來,放到下面的動態(tài)數(shù)據(jù)表中單擊想要購買的商品,將該商品的數(shù)據(jù)取出來,放到下面的動態(tài)數(shù)據(jù)表中(數(shù)數(shù)據(jù)表用虛線畫的長方形表示據(jù)表用虛線畫的長方形表示),然后再將數(shù)據(jù)表放入,然后再將數(shù)據(jù)表放入“購貨車中,這里的購購貨車中,這里的購貨車用貨車用SessionShoppingCart表示;翻開表示;翻開“購貨車購貨車.aspx網(wǎng)頁,控件網(wǎng)頁,控件GridView以以
6、SessionShoppingCart作為數(shù)據(jù)源顯示數(shù)據(jù),并在新網(wǎng)頁中確作為數(shù)據(jù)源顯示數(shù)據(jù),并在新網(wǎng)頁中確定購買的數(shù)量,并輸入定購買的數(shù)量,并輸入“客戶標(biāo)志;與此同時生成新的內(nèi)存數(shù)據(jù)表,并將新客戶標(biāo)志;與此同時生成新的內(nèi)存數(shù)據(jù)表,并將新數(shù)據(jù)表存入新的數(shù)據(jù)表存入新的SessionShoppingCart2中;翻開中;翻開“結(jié)賬結(jié)賬.aspx網(wǎng)頁,以網(wǎng)頁,以新新Session對象作為數(shù)據(jù)源在對象作為數(shù)據(jù)源在GridView控件中顯示數(shù)據(jù),同時經(jīng)過控件中顯示數(shù)據(jù),同時經(jīng)過Sessionkhbj將客戶標(biāo)志傳入到網(wǎng)頁中;在將客戶標(biāo)志傳入到網(wǎng)頁中;在“結(jié)賬網(wǎng)頁中完成計算總價結(jié)賬網(wǎng)頁中完成計算總價的任務(wù),最
7、后存入訂單;在的任務(wù),最后存入訂單;在“查看訂單查看訂單.aspx網(wǎng)頁中以客戶標(biāo)志作為查詢條網(wǎng)頁中以客戶標(biāo)志作為查詢條件顯示訂單,以便只顯示客戶本人的訂單部分。件顯示訂單,以便只顯示客戶本人的訂單部分。在上述各個階段中,都允許客戶對數(shù)據(jù)進展選擇和修正。除開場階段和最后在上述各個階段中,都允許客戶對數(shù)據(jù)進展選擇和修正。除開場階段和最后階段需求直接存取數(shù)據(jù)庫以外,其他部分均采用內(nèi)存動態(tài)數(shù)據(jù)表來組織數(shù)據(jù),階段需求直接存取數(shù)據(jù)庫以外,其他部分均采用內(nèi)存動態(tài)數(shù)據(jù)表來組織數(shù)據(jù),這樣做可以提高系統(tǒng)的運轉(zhuǎn)效率。這樣做可以提高系統(tǒng)的運轉(zhuǎn)效率??蛻魳?biāo)志是識別客戶的獨一標(biāo)志,平常存放在客戶登錄表中,包括有、聯(lián)絡(luò)客戶
8、標(biāo)志是識別客戶的獨一標(biāo)志,平常存放在客戶登錄表中,包括有、聯(lián)絡(luò)方法等。詳細(xì)工程由網(wǎng)絡(luò)商店事先確定。方法等。詳細(xì)工程由網(wǎng)絡(luò)商店事先確定。 3 主要數(shù)據(jù)表的構(gòu)造及其他預(yù)備任務(wù) 3 主要數(shù)據(jù)表的構(gòu)造及其他預(yù)備任務(wù) 3 主要數(shù)據(jù)表的構(gòu)造及其他預(yù)備任務(wù) 2 設(shè)計用戶控件及主控頁 為了使得系統(tǒng)具有很好的可重用性和可維護性,應(yīng)該盡能夠運用用戶控件為了使得系統(tǒng)具有很好的可重用性和可維護性,應(yīng)該盡能夠運用用戶控件(User Control) 以便發(fā)揚代碼重用的優(yōu)勢以減少反復(fù)勞動,并且使得各個網(wǎng)頁的顯示風(fēng)格一以便發(fā)揚代碼重用的優(yōu)勢以減少反復(fù)勞動,并且使得各個網(wǎng)頁的顯示風(fēng)格一致。致。1. 創(chuàng)建用戶控件創(chuàng)建用戶控件商
9、店的商標(biāo),網(wǎng)頁之間鏈接的圖標(biāo)以及查詢部分是大多數(shù)網(wǎng)頁都需求顯示的部分,可商店的商標(biāo),網(wǎng)頁之間鏈接的圖標(biāo)以及查詢部分是大多數(shù)網(wǎng)頁都需求顯示的部分,可以先將其建成用戶控件。例如,這里我們將商店商標(biāo)、幾個網(wǎng)站閱讀的控件以先將其建成用戶控件。例如,這里我們將商店商標(biāo)、幾個網(wǎng)站閱讀的控件(hyperLink)以及查詢界面等分別做成用戶控件。用戶控件中的代碼可以以后再補充上以及查詢界面等分別做成用戶控件。用戶控件中的代碼可以以后再補充上去。去。2. 創(chuàng)建主控頁創(chuàng)建主控頁先創(chuàng)建主控頁然后再創(chuàng)建模板中的網(wǎng)頁比較方便。主控頁的規(guī)劃如下圖。先創(chuàng)建主控頁然后再創(chuàng)建模板中的網(wǎng)頁比較方便。主控頁的規(guī)劃如下圖。 主控頁的
10、上方放的是用戶控件,左下方放的是主控頁的上方放的是用戶控件,左下方放的是GridView控件,該控件與類型表控件,該控件與類型表(Categories)進展數(shù)據(jù)綁定,右下方是給各網(wǎng)頁留下的空間。進展數(shù)據(jù)綁定,右下方是給各網(wǎng)頁留下的空間。2 設(shè)計用戶控件及主控頁 主控頁的規(guī)劃3 設(shè) 計 主 頁 主頁是客戶訪問的第一個頁面,可以給客戶提供主頁是客戶訪問的第一個頁面,可以給客戶提供第一印象。它的主要義務(wù)是吸引客戶并引導(dǎo)客戶第一印象。它的主要義務(wù)是吸引客戶并引導(dǎo)客戶進入選購界面。一個好的主頁應(yīng)該生動、明晰,進入選購界面。一個好的主頁應(yīng)該生動、明晰,可以激發(fā)出客戶購買的興趣??梢约ぐl(fā)出客戶購買的興趣。在
11、主控頁中生成一個主頁,設(shè)計歡迎界面,其簡在主控頁中生成一個主頁,設(shè)計歡迎界面,其簡要情況如圖要情況如圖 所示。所示。在主控頁中分別再生成其他網(wǎng)頁。例如在主控頁中分別再生成其他網(wǎng)頁。例如“商商品品.aspx、“購貨車購貨車.aspx、“結(jié)賬結(jié)賬.aspx、“訂訂單單.aspx等。這些網(wǎng)頁的內(nèi)容可以以后再補充。等。這些網(wǎng)頁的內(nèi)容可以以后再補充。在用戶控件中將鏈接指針分別與各個網(wǎng)頁鏈接。在用戶控件中將鏈接指針分別與各個網(wǎng)頁鏈接。3 設(shè) 計 主 頁 歡迎界面4 產(chǎn)品類型與產(chǎn)品目錄5 選 擇 商 品 u5.1 選擇按鈕觸發(fā)的事件 u5.2 如何取出數(shù)據(jù) u5.3 如何創(chuàng)建數(shù)據(jù)表 5 選 擇 商 品 為了
12、選擇商品,在產(chǎn)品表中的欄目為了選擇商品,在產(chǎn)品表中的欄目(Column)中添加一按中添加一按鈕鈕(Button),并且在它的,并且在它的CommdName屬性中取名為屬性中取名為“select(也可以取其他名字也可以取其他名字)。當(dāng)單擊該按鈕時,將該產(chǎn)。當(dāng)單擊該按鈕時,將該產(chǎn)品的副本取出來動態(tài)生成數(shù)據(jù)表,利用這個動態(tài)數(shù)據(jù)表來品的副本取出來動態(tài)生成數(shù)據(jù)表,利用這個動態(tài)數(shù)據(jù)表來生成生成“購貨車。購貨車。為了生成這個數(shù)據(jù)表,需求處理以下三個問題:為了生成這個數(shù)據(jù)表,需求處理以下三個問題:單擊按鈕時將觸發(fā)什么事件;單擊按鈕時將觸發(fā)什么事件;如何提取如何提取GridView控件中的數(shù)據(jù);控件中的數(shù)據(jù);如
13、何創(chuàng)建動態(tài)數(shù)據(jù)表并將取出的數(shù)據(jù)放入其中。如何創(chuàng)建動態(tài)數(shù)據(jù)表并將取出的數(shù)據(jù)放入其中。 5.1 選擇按鈕觸發(fā)的事件 GridView 控件中的控件中的RowCommand事件,是事件,是GridView控件內(nèi)任一按控件內(nèi)任一按鈕都將觸發(fā)的事件。因此在運用這個事件時,先要判別當(dāng)前點擊的是鈕都將觸發(fā)的事件。因此在運用這個事件時,先要判別當(dāng)前點擊的是哪個按鈕。判別的方法是根據(jù)按鈕的命令名,語句如下:哪個按鈕。判別的方法是根據(jù)按鈕的命令名,語句如下:If (emandName=按鈕命令名按鈕命令名) 5.2 如何取出數(shù)據(jù) 根據(jù)鼠標(biāo)點擊的根據(jù)鼠標(biāo)點擊的“行以及在行以及在GridView中的中的“列,可以取出
14、相應(yīng)的列,可以取出相應(yīng)的數(shù)據(jù)。確定點擊行的語句是:數(shù)據(jù)。確定點擊行的語句是:int index = Convert.ToInt32(emandArgument);GridViewRow row = GridView1.Rowsindex;取出某列的語句是:取出某列的語句是:string bhText = row.Cells1.Text;string mcText = row.Cells2.Text;上述語句提取出鼠標(biāo)點擊的行中第上述語句提取出鼠標(biāo)點擊的行中第2列和第列和第3列中的數(shù)據(jù)列中的數(shù)據(jù)(列的序號從列的序號從0開場開場)。 5.3 如何創(chuàng)建數(shù)據(jù)表 先根據(jù)類庫中的類生成數(shù)據(jù)表對象,然后定義
15、數(shù)據(jù)表的構(gòu)造,定義數(shù)據(jù)表各列的數(shù)據(jù)類型及標(biāo)題。語句如下:先根據(jù)類庫中的類生成數(shù)據(jù)表對象,然后定義數(shù)據(jù)表的構(gòu)造,定義數(shù)據(jù)表各列的數(shù)據(jù)類型及標(biāo)題。語句如下: System.Data.DataTable Cart = new System.Data.DataTable();/ 定義數(shù)據(jù)表對象定義數(shù)據(jù)表對象 if (emandName = select) if (SessionShoppingCart = null) Cart.Columns.Add(商品編號商品編號, typeof(int); / 確定各列的標(biāo)題及類型確定各列的標(biāo)題及類型 Cart.Columns.Add(商品稱號商品稱號, typ
16、eof(string); Cart.Columns.Add(單元含量單元含量, typeof(string); Cart.Columns.Add(單價單價, typeof(double); SessionShoppingCart = Cart; / / 再取出各列的數(shù)據(jù),同時進展類型轉(zhuǎn)換再取出各列的數(shù)據(jù),同時進展類型轉(zhuǎn)換 Cart = (System.Data.DataTable)SessionShoppingCart; int index = Convert.ToInt32(emandArgument); GridViewRow row = GridView1.Rowsindex; stri
17、ng bhText = row.Cells1.Text; string mcText = row.Cells2.Text; string dyText = row.Cells4.Text; string djText = row.Cells5.Text; int bh = int.Parse(bhText);double dj = double.Parse(djText);/ 然后添加數(shù)據(jù)行,并將數(shù)據(jù)填入該行的各列之中。然后添加數(shù)據(jù)行,并將數(shù)據(jù)填入該行的各列之中。 System.Data.DataRow rr = Cart.NewRow(); rr商品編號商品編號=bh; rr商品稱號商品稱號
18、 = mcText; rr單元含量單元含量 = dyText; rr單價單價 = dj; Cart.Rows.Add(rr); / 將新行參與數(shù)據(jù)表中將新行參與數(shù)據(jù)表中SessionShoppingCart = Cart; 5.3 如何創(chuàng)建數(shù)據(jù)表 由于默許情況下,網(wǎng)頁之間不堅持形狀,當(dāng)他選擇多行時,購貨車中只會保管最后一項選擇。為了可以在購貨車中由于默許情況下,網(wǎng)頁之間不堅持形狀,當(dāng)他選擇多行時,購貨車中只會保管最后一項選擇。為了可以在購貨車中保管多項選擇,需求利用保管多項選擇,需求利用Session 對象來堅持形狀。以下語句的作用就是經(jīng)過對象來堅持形狀。以下語句的作用就是經(jīng)過Session來
19、堅持形狀。來堅持形狀。if(SessionShoppingCart=null) Cart = new DataTable(); SessionShoppingCart=Cart;Cart = (System.Data.DataTable)SessionShoppingCart;綜合以上所述,創(chuàng)建內(nèi)存數(shù)據(jù)表的完好代碼如下:綜合以上所述,創(chuàng)建內(nèi)存數(shù)據(jù)表的完好代碼如下: void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) System.Data.DataTable Cart = new System.Data.Da
20、taTable(); / 生成內(nèi)存數(shù)據(jù)表對象生成內(nèi)存數(shù)據(jù)表對象 if (emandName = select) if (SessionShoppingCart = null) / 定義數(shù)據(jù)表構(gòu)造定義數(shù)據(jù)表構(gòu)造 Cart.Columns.Add(商品編號商品編號, typeof(int);5.3 如何創(chuàng)建數(shù)據(jù)表 Cart.Columns.Add(商品稱號商品稱號, typeof(string); Cart.Columns.Add(單元含量單元含量, typeof(string); Cart.Columns.Add(單價單價, typeof(double); SessionShoppingCart
21、 = Cart; Cart = (System.Data.DataTable)SessionShoppingCart; int index=Convert.ToInt32(emandArgument); / 確定點擊的行確定點擊的行 GridViewRow row = GridView1.Rowsindex; string bhText = row.Cells1.Text; / 取出列中的數(shù)據(jù)取出列中的數(shù)據(jù) string mcText = row.Cells2.Text; string dyText = row.Cells4.Text; string djText = row.Cells5.T
22、ext; int bh = int.Parse(bhText); / 數(shù)據(jù)的類型轉(zhuǎn)換數(shù)據(jù)的類型轉(zhuǎn)換 double dj = double.Parse(djText); System.Data.DataRow rr = Cart.NewRow(); rr商品編號商品編號=bh; / 將取出的數(shù)據(jù)放入數(shù)據(jù)表中將取出的數(shù)據(jù)放入數(shù)據(jù)表中 rr商品稱號商品稱號 = mcText; rr單元含量單元含量 = dyText; rr單價單價 = dj; Cart.Rows.Add(rr); / 將新行參與數(shù)據(jù)表中將新行參與數(shù)據(jù)表中 SessionShoppingCart = Cart; / 將數(shù)據(jù)表放入將數(shù)據(jù)
23、表放入Session中中 6 顯示購貨車 u6.1 輸入客戶標(biāo)志 u6.2 在GridView中添加按鈕 u6.3 添加模板列 u6.4 在窗體頁的Page_Load事件中添加條件 u6.5 在GridView的RowCommand事件中編寫代碼 6 顯示購貨車 在購貨車的顯示頁面中,將在購貨車的顯示頁面中,將SessionShoppingCart作為數(shù)據(jù)源顯示在作為數(shù)據(jù)源顯示在GridView中,語中,語句如下:句如下:private void Page_Load(object sender, System.EventArgs e)GridView1.DataSource= SessionS
24、hoppingCart;DataBind();購貨車在這里就是放在購貨車在這里就是放在Session對象中的數(shù)據(jù)表。用對象中的數(shù)據(jù)表。用Session對象保管購貨車是最恰當(dāng)?shù)姆綄ο蟊9苜徹涇囀亲钋‘?dāng)?shù)姆绞健S捎诿總€客戶都有屬于本人的式。由于每個客戶都有屬于本人的Session對象,即使多個客戶同時進展網(wǎng)上購買時,他對象,即使多個客戶同時進展網(wǎng)上購買時,他們的數(shù)據(jù)也不會混雜。另外們的數(shù)據(jù)也不會混雜。另外Session對象是一種暫時性的容器,非常符合購貨車的特點。對象是一種暫時性的容器,非常符合購貨車的特點。首先在數(shù)據(jù)庫中創(chuàng)建首先在數(shù)據(jù)庫中創(chuàng)建“訂單表。結(jié)賬窗體界面中的表的構(gòu)造最好與數(shù)據(jù)庫中的訂單
25、表。結(jié)賬窗體界面中的表的構(gòu)造最好與數(shù)據(jù)庫中的“訂單表訂單表一致。和購貨車相比,數(shù)據(jù)表中添加了幾個字段一致。和購貨車相比,數(shù)據(jù)表中添加了幾個字段(如訂購數(shù)量、合計等如訂購數(shù)量、合計等),因此應(yīng)該重新組,因此應(yīng)該重新組織數(shù)據(jù)表,并運用另一個織數(shù)據(jù)表,并運用另一個Session對象對象(這里運用這里運用ShoppingCart2)。為了完善購貨車中的數(shù)據(jù)以便轉(zhuǎn)入結(jié)賬界面,在購貨車的窗體中還需求執(zhí)行以下為了完善購貨車中的數(shù)據(jù)以便轉(zhuǎn)入結(jié)賬界面,在購貨車的窗體中還需求執(zhí)行以下5方面的方面的任務(wù)。任務(wù)。(1)在窗體頁中用一在窗體頁中用一TextBox控件以輸入用戶標(biāo)志。控件以輸入用戶標(biāo)志。(2)在在Grid
26、View控件中添加一個按鈕控件中添加一個按鈕(Button),將其,將其CommandName屬性設(shè)成屬性設(shè)成“select。(3)在在GridView控件中添加一模板列,放入控件中添加一模板列,放入TextBox控件,以便輸入購買數(shù)量。控件,以便輸入購買數(shù)量。(4)在窗體頁的在窗體頁的Page_Load事件中加上條件:事件中加上條件:if(!IsPostBack) 。(5)在在GridView的的RowCommand事件中編寫代碼事件中編寫代碼(代碼在下一節(jié)中講述代碼在下一節(jié)中講述)。購貨車窗體的界面如下圖。購貨車窗體的界面如下圖。 6 顯示購貨車 購貨車的窗體界面6.1 輸入客戶標(biāo)志 客戶
27、標(biāo)志必需具有獨一性和可靠性,根據(jù)該標(biāo)志可以與客戶聯(lián)絡(luò),確定發(fā)貨的方法和地址,為此須添加輸入客戶標(biāo)志的TextBox控件,以及相應(yīng)的RequiredFieldValidator校驗控件,以防止輸入中的脫漏。6.2 在GridView中添加按鈕 經(jīng)過GridView的Columns屬性中添加一按鈕,并為它的CommandName屬性命名(例如命名為“buy),以便確認(rèn)選擇項。6.3 添加模板列 在GridView控件中添加一個模板列,將TextBox1控件放入ItemTemplate模板中,以便輸入購買數(shù)量。先將其默許值設(shè)為1。6.4 在窗體頁的Page_Load事件中添加條件 為了進展結(jié)賬的計算
28、,須在Page_Load事件中添加以下條件:private void Page_Load(object sender, System.EventArgs e) if(!IsPostBack)GridView1.DataSource= SessionShoppingCart;DataBind(); IsPostBack屬性是為了區(qū)分網(wǎng)頁是第一次被翻開,還是后續(xù)翻開(事件處置后的前往)。當(dāng)網(wǎng)頁為后續(xù)翻開時,該屬性為true,否那么為false。if(!IsPostBack) / 執(zhí)行語句以上代碼闡明只需網(wǎng)頁第一次(不是后續(xù))翻開時才執(zhí)行大括號中的語句。 6.5 在GridView的RowComma
29、nd事件中編寫代碼 void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) System.Data.DataTable Cart = new System.Data.DataTable();/生成數(shù)據(jù)表 if (emandName = buy) if (SessionShoppingCart2 = null) Cart.Columns.Add(商品編號, typeof(int); /建立數(shù)據(jù)表構(gòu)造 Cart.Columns.Add(商品稱號, typeof(string); Cart.Columns.Add(單元
30、含量, typeof(string); Cart.Columns.Add(單價, typeof(double); Cart.Columns.Add(訂購數(shù)量, typeof(int); Cart.Columns.Add(折扣, typeof(double); Cart.Columns.Add(合計, typeof(double); SessionShoppingCart2 = Cart; Cart = (System.Data.DataTable)SessionShoppingCart2; if (TextBox2.Text = ) / 輸入客戶標(biāo)志 Validate(); / 調(diào)用校驗控件進
31、展校驗 else 6.5 在GridView的RowCommand事件中編寫代碼 Sessionkhbj = TextBox2.Text; int index = Convert.ToInt32(emandArgument); GridViewRow row = GridView1.Rowsindex; TextBox tt = (System.Web.UI.WebControls.TextBox)row.Cells1.FindControl(TextBox1); string dgl = tt.Text; int dg = int.Parse(dgl); if (dg = 1) dg = 1
32、; / 假設(shè)購貨量小于1時,定為1 string bhText = row.Cells2.Text; string mcText = row.Cells3.Text; string dyText = row.Cells4.Text; string djText = row.Cells5.Text; int bh = int.Parse(bhText); double dj = double.Parse(djText); System.Data.DataRow rr = Cart.NewRow(); rr商品編號=bh; rr商品稱號 = mcText; rr單元含量 = dyText; rr單
33、價 = dj; rr訂購數(shù)量 = dg; int zk = 1; rr折扣 = zk; double hj = dj * dg * zk; / 合計運用三者的乘積 rr合計 = hj; Cart.Rows.Add(rr); SessionShoppingCart2 = Cart; 7 結(jié) 賬 u7.1 結(jié)賬網(wǎng)頁的數(shù)據(jù)顯示 u7.2 在GridView控件中添加復(fù)選框 u7.3 匯總的計算 7.1 結(jié)賬網(wǎng)頁的數(shù)據(jù)顯示 在結(jié)賬網(wǎng)頁中的GridView控件應(yīng)該以SessionShoppingCart2作為數(shù)據(jù)源顯示數(shù)據(jù),其語句如下:private void Page_Load(object send
34、er, System.EventArgs e)GridView1.DataSource= SessionShoppingCart2;DataBind();7.2 在GridView控件中添加復(fù)選框 為了允許客戶在結(jié)賬時有時機對本人的選擇做進一步伐整,可以在結(jié)賬界面的每條記錄前面添加一復(fù)選框。默許情況下這些復(fù)選框都被選中,假設(shè)想撤銷該項選擇時,只須取消該復(fù)選框的選擇即可,訂單表中將不會存入被取消的選項。為了添加復(fù)選框,需求在GridView中經(jīng)過Column屬性增添一“模板字段,并且在模板中增添復(fù)選框控件。模板的設(shè)置代碼如下: 結(jié)賬的界面如下圖。在這個界面中,客戶標(biāo)志和表格中的數(shù)據(jù)均從上一個網(wǎng)頁
35、傳來。在結(jié)賬界面主要完成匯總計算以及將訂單表存入數(shù)據(jù)庫的操作。7.2 在GridView控件中添加復(fù)選框 結(jié)賬的界面7.3 匯總的計算 當(dāng)單擊【匯總】按鈕時,顯示框中將顯示總和。假設(shè)改動了復(fù)選框的選擇,匯總的結(jié)果也應(yīng)該跟隨著改動。為了進展匯總計算,需設(shè)置循環(huán)語句,逐條檢查復(fù)選框的選擇形狀,只需該復(fù)選框被選中時,才將該記錄的數(shù)據(jù)計入?yún)R總中。此處需求用到的類和方法 如下。GridView1.Rowsii用來表示 GridView 控件中的某一行。FindControl(控件的id)方法:用來在當(dāng)前的命名容器中搜索帶指定 id 參數(shù)的效力器控件。匯總按鈕的代碼如下:void Button2_Clic
36、k(object sender, EventArgs e) double sum=0.0; for(int ii=0; ii GridView1.Rows.Count;ii+) CheckBox cc = (CheckBox)GridView1.Rowsii.Cells0.FindControl(CheckBox1); if(cc.Checked) / 假設(shè)復(fù)選框被選中 sum = sum + (double.Parse(GridView1.Rowsii.Cells7.Text); TextBox2.Text=sum.ToString(); / 顯示匯總結(jié)果 為實現(xiàn)復(fù)選框的功能,在Page_L
37、oad事件中需求做一些改動。代碼如下:void Page_Load(object sender, EventArgs e) if (!IsPostBack) TextBox1.Text = Sessionkhbz.ToString(); GridView1.DataSource = SessionShoppingCart2; GridView1.DataBind(); 8 保 存 訂 單 假設(shè)客戶對結(jié)果感到稱心時,可單擊【存入數(shù)據(jù)庫】按鈕,將訂單存入數(shù)據(jù)庫的“訂單表 中。存入時運用存儲過程,為此需求先建立訂單表,表的構(gòu)造如前面所示,另外還需求在數(shù)據(jù)庫端創(chuàng)建存儲過程,這里需求創(chuàng)建一個添加新記錄的
38、存儲過程。運用的語句如下:INSERT INTO dbo.訂單表(客戶ID, 產(chǎn)品ID, 產(chǎn)品稱號, 單位數(shù)量, 單價, 訂購量, 訂購時間) VALUES (客戶ID, 產(chǎn)品ID, 產(chǎn)品稱號, 單位數(shù)量, 單價, 訂購量, 訂購時間);在數(shù)據(jù)庫端設(shè)置的存儲過程如圖 所示。為了調(diào)用存儲過程,從【工具箱】中拖入一SqlDataSource控件并與存儲過程銜接。銜接過程中最大的不同點是對待定參數(shù)賦值的方式。這些待定參數(shù)的值不是從固定的控件中讀取,而是經(jīng)過循環(huán)語句從GridView控件(代表內(nèi)存中的訂單)的字段中獲得。待定參數(shù)的賦值過程是:開場對GridView控件逐條記錄進展循環(huán);在循環(huán)語句中首先取出復(fù)選框的形狀,判別復(fù)選框能否被選中;假設(shè)被選中,先去除原有參數(shù),然后給各參數(shù)賦值;最后調(diào)用存儲過程以存入訂單。詳細(xì)的代碼如下:void Button1_Click(object sender, Even
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年珠海市橫琴粵澳深度合作區(qū)招聘公辦幼兒園教職工真題
- 2024年衢州市常山縣衛(wèi)健系統(tǒng)招考專業(yè)技術(shù)人員真題
- 2024年武漢設(shè)計工程學(xué)院輔導(dǎo)員考試真題
- 2024年亳州蒙城縣城區(qū)學(xué)校農(nóng)村教師競崗真題
- 竹代塑產(chǎn)品的市場接受度與消費者認(rèn)知
- 國內(nèi)外低碳經(jīng)濟與綠色金融關(guān)系的比較分析
- 信息記錄管理制度
- 信用安全管理制度
- 信訪接待管理制度
- 公司內(nèi)外務(wù)管理制度
- 國家開放大學(xué)2025年《創(chuàng)業(yè)基礎(chǔ)》形考任務(wù)3答案
- SL631水利水電工程單元工程施工質(zhì)量驗收標(biāo)準(zhǔn)第1部分:土石方工程
- 2023-2024學(xué)年江蘇省蘇州市高二下學(xué)期6月期末物理試題(解析版)
- LNG加氣站質(zhì)量管理手冊
- (正式版)HGT 22820-2024 化工安全儀表系統(tǒng)工程設(shè)計規(guī)范
- 兒童手機設(shè)計報告
- 防眩板施工組織設(shè)計
- 公路交通工程及安全設(shè)施施工指導(dǎo)意見
- 干式變壓器企業(yè)標(biāo)準(zhǔn)
- 國家開放大學(xué)《流通概論》章節(jié)測試參考答案
- 中小學(xué)廁所蹲位數(shù)量統(tǒng)計表
評論
0/150
提交評論