陳印
(四川職業(yè)技術(shù)學(xué)院計(jì)科系,四川 遂寧 629000)
GridView中數(shù)據(jù)行批量刪除的實(shí)現(xiàn)
陳印
(四川職業(yè)技術(shù)學(xué)院計(jì)科系,四川 遂寧 629000)
闡述了在ASP.NET中如何對(duì)對(duì)GridView的數(shù)據(jù)行新增復(fù)選、全選和反選功能,以及如何從對(duì)GridView中獲取各數(shù)據(jù)行的選中標(biāo)識(shí)并將選中的數(shù)據(jù)行進(jìn)行批量刪除的方法.
ASP.NET;GridView;數(shù)據(jù);遍歷
2.1 GridView的行列結(jié)構(gòu)
2.1.1 行(Row)
GridView由行集合(Rows)構(gòu)成,其中的行是GridViewRow類(lèi)型的對(duì)象.GridViewRow行分為DataRow數(shù)據(jù)行)、Header(標(biāo)題行)、Footer(尾部行)等六種類(lèi)型,真正與數(shù)據(jù)庫(kù)中的數(shù)據(jù)行相關(guān)的是DataRow.通過(guò)GridView綁定事件獲取到的行將根據(jù)實(shí)際情況會(huì)包含不同類(lèi)型的行,而在GridView的Rows集合中包含的全部是數(shù)據(jù)行DataRow.
2.1.2 列(Cell)
GridViewRow由列集合(Cells)構(gòu)成.GridView中的列是TableCell類(lèi)型的對(duì)象.TableCell列是一種容器對(duì)象,具有最基本的屬性Text,用于設(shè)置或獲取單元格中的數(shù)據(jù);此外,列中還可以使用其他服務(wù)器或 Html控件對(duì)象,如Image、Label、TextBox、CheckBox等.TableCell 中的Controls集合可用于獲取或設(shè)置該單元格中的所有控件(以便于找到需要的控件并轉(zhuǎn)換成指定的類(lèi)型來(lái)獲取相關(guān)數(shù)據(jù))。
2.2 復(fù)選列的設(shè)置與狀態(tài)的判定
在GridView中,可以添加模板列,只需在模板列中添加復(fù)選框控件CheckBox即可實(shí)現(xiàn)行的復(fù)選功能.由于數(shù)據(jù)行可以通過(guò)其Cell集合獲取該行所容納的控件,因此可以輕而易舉地取出當(dāng)前行的復(fù)選框控件并根據(jù)其Checked屬性判定其是否選中.
值得注意的是,本文論述的“選中”是通過(guò)CheckBox的狀態(tài)來(lái)標(biāo)識(shí)的,與GridView的Data-ControlRowState.Selected所表達(dá)的選中行是兩個(gè)不同概念.GridView不允許同時(shí)將多個(gè)列置為選中狀態(tài)的.
2.3.4 加樣回收試驗(yàn) 取編號(hào)S9的和血膠囊內(nèi)容物6份,每份1.5 g,精密稱(chēng)定,制備成供試品溶液,分別精密加入濃度為595.2μg·mL-1的5-羥甲基糠醛對(duì)照品溶液0.40 mL,濃度為284.2μg·mL-1的蒼術(shù)素對(duì)照品溶液0.36 mL,揮干溶劑,按“2.2.3”項(xiàng)制備加樣回收供試品溶液,分別精密吸取10μL,注入液相色譜儀,測(cè)定,計(jì)算加樣回收率。結(jié)果見(jiàn)表1、表2。
2.3 GridView 的數(shù)據(jù)行的遍歷
由于GridView 的數(shù)據(jù)行集合可以通過(guò)Grid-View 的Rows 屬性來(lái)獲取,因此,遍歷GridView 的數(shù)據(jù)行其實(shí)就是遍歷其Rows 集合.C# 中對(duì)集合對(duì)象的遍歷方法很多,可以使用for 循環(huán),for each循環(huán)等等.如果使用for each 循環(huán),需注意遍歷對(duì)象的類(lèi)型為GridViewRow.
只要能遍歷數(shù)據(jù)行,就可以按照2.2所介紹的方法對(duì)G r i d V ie w中的數(shù)據(jù)行逐行進(jìn)行處理,實(shí)現(xiàn)對(duì)所有選中的行進(jìn)行批量刪除的功能.
2.4 GridView與數(shù)據(jù)源的關(guān)系
GGridView 是數(shù)據(jù)呈現(xiàn)控件,它與數(shù)據(jù)源控件(如SqlDataSource 等)有密切的聯(lián)系.GridView 中呈現(xiàn)的數(shù)據(jù)來(lái)自于數(shù)據(jù)源的查詢(xún)命令SelectCom-mand 所查詢(xún)到的結(jié)果集,而GridView 所提供的添加、修改、刪除則是通過(guò)傳遞相關(guān)命令參數(shù)分別自動(dòng)調(diào)用數(shù)據(jù)源的插入命令I(lǐng)nsertCommand、修改命令UpdateCommand 以及刪除命令DeleteCommand來(lái)實(shí)現(xiàn)的,GridView 本身并不具有對(duì)數(shù)據(jù)庫(kù)進(jìn)行直接操作的能力.
因此,當(dāng)GridView 通過(guò)DeleteRow()方法刪除數(shù)據(jù)時(shí),實(shí)際上會(huì)自動(dòng)傳遞參數(shù)并調(diào)用數(shù)據(jù)源的刪除命令對(duì)數(shù)據(jù)庫(kù)中的表記錄執(zhí)行刪除操作,前提是數(shù)據(jù)源需配置相應(yīng)的刪除命令.
使用SqlDataSource(實(shí)例名:sds)作為數(shù)據(jù)源,查詢(xún)學(xué)生表的數(shù)據(jù),并自動(dòng)配置刪除學(xué)生記錄命令;使用GridView(實(shí)例名:gv)呈現(xiàn)學(xué)生表數(shù)據(jù),每行數(shù)據(jù)前(首列)添加模板列,在該列添加復(fù)選框CheckBo(實(shí)例名:checkRow),用于標(biāo)識(shí)數(shù)據(jù)行的選中狀態(tài);在GridView 的下方放置兩個(gè)CheckBox,用于實(shí)現(xiàn)全選(實(shí)例名:checkAll)、反選(實(shí)例名:checkReverse)功能;再放置一個(gè)LinkButton(實(shí)例名:lnkDel),用于實(shí)現(xiàn)對(duì)選中的數(shù)據(jù)行執(zhí)行刪除操作.
3.1 全選的實(shí)現(xiàn)
在checkAll 控件中設(shè)置AutoPostBack 為true,并在其CheckedChanged 事件中參考使用如下代碼:
注意:其實(shí)第一列單元格作為模板列在設(shè)置時(shí)只放置了一個(gè)CheckBox 控件,按道理,該單元格的Controls 集合只包含1 個(gè)控件. 但事實(shí)并非如此,通過(guò)單元格的Contrls 集合遍歷會(huì)發(fā)現(xiàn),這其中還包括有其他隱含控件,因此,不能直接使用Controls[0]去確認(rèn)這個(gè)CheckBox,而是要通過(guò)循環(huán)命令遍歷Controls 集合中的每一個(gè)控件,通過(guò)其UniqueID來(lái)識(shí)別誰(shuí)才是這個(gè)CheckBox.
3.2 反選的實(shí)現(xiàn)
在checkReverse 控件中設(shè)置AutoPostBack 為true,并在其CheckedChanged 事件中參考使用如下代碼:
3.3 數(shù)據(jù)行的遍歷與刪除
在lnkDel控件的單擊事件中參考使用如下代碼:
本文通過(guò)服務(wù)器控件在GridView 中實(shí)現(xiàn)了復(fù)選、全選、反選并將選中的數(shù)據(jù)行進(jìn)行批量刪除的功能,是對(duì)GridView 功能的有效擴(kuò)充.其實(shí),對(duì)數(shù)據(jù)行進(jìn)行復(fù)選等相關(guān)操作不回傳至服務(wù)器也能實(shí)現(xiàn),即無(wú)刷新操作,不過(guò)需要開(kāi)發(fā)人員熟悉JavaScript等技術(shù),這屬于另一個(gè)課題,讀者可自行研究.
[1]郭文波. ASP.NET GridView 控件的高級(jí)數(shù)據(jù)綁定與應(yīng)用[J].電腦編程技巧與維護(hù),2012,(07).
[2]陳印. ASP.Net 中主控與詳細(xì)數(shù)據(jù)管理解決方案[J].四川職業(yè)技術(shù)學(xué)院學(xué)報(bào),2009,(3).
The Realization of Data Bulk Deletion in Grid View
CHEN Yin
(Sichuan Vocational and Technical College, Suining Sichuan 629000)
This paper explains how to add some functions such as re election, entire election and anti-election the data of the GridView in ASP.NET, and explains how to get each row of data to identify and delete bulk data.
ASP.NET; GridView; Data; Traversal
TP311.1
A
1672-2094(2014)01-0145-03
責(zé)任編輯:張隆輝
2013-11-06
四川省教育廳自然科學(xué)基金項(xiàng)目“基于混合算法的物流配送路徑優(yōu)化方案研究”(13ZB0031).
陳 ?。?979-),男,四川渠縣人,四川職業(yè)技術(shù)學(xué)院計(jì)算機(jī)科學(xué)系副教授.研究方向:計(jì)算機(jī)軟件開(kāi)發(fā)、數(shù)據(jù)庫(kù)開(kāi)發(fā).