




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
8.1創(chuàng)建GridView與SqlDataSource控件
8.2GridView與SqlDataSource數(shù)據(jù)處理架構(gòu)簡(jiǎn)介
8.3使用智能標(biāo)記設(shè)置GridView
8.4GridView添加分頁(yè)功能
8.5GridView添加排序功能
8.6GridView添加選擇功能
8.7GridView添加編輯功能
8.8
GridView添加刪除功能
8.9GridView的外觀設(shè)置
8.10GridView字段
8.11設(shè)置命令字段
8.12設(shè)置數(shù)據(jù)綁定字段
8.13設(shè)置超鏈接字段
8.14設(shè)置按鈕字段
8.15模板字段介紹
本章小結(jié)
訓(xùn)練任務(wù)8.1創(chuàng)建GridView與SqlDataSource控件在VisualStudio2005中,創(chuàng)建GridView網(wǎng)頁(yè)最簡(jiǎn)單的方法是將服務(wù)器資源管理器的表或字段拖曳到網(wǎng)頁(yè)設(shè)計(jì)界面,即可生成GridView控件與SqlDataSource控件。在本節(jié)的范例中將創(chuàng)建如圖8-1所示的GridView控件與SqlDataSource結(jié)合,可以讀取數(shù)據(jù)庫(kù)數(shù)據(jù),并在網(wǎng)頁(yè)上顯示數(shù)據(jù)。其中包含排序、編輯、選擇、刪除與分頁(yè)功能。
下面將示范如何以拖曳方式創(chuàng)建GridView與SqlDataSource控件??梢苑謩e拖曳整個(gè)表以及部分字段,操作方式如下:
(1)創(chuàng)建新網(wǎng)頁(yè)GridViewSqlDataSource.aspx并切換到設(shè)計(jì)模式。
(2)從服務(wù)器資源管理器拖曳表字段。
可以選擇所有字段或部分字段創(chuàng)建GridView,本例中采取第二種方式,即拖曳整個(gè)表到設(shè)計(jì)界面,如圖8-1所示。拖曳部分字段到設(shè)計(jì)界面,如圖8-2所示。圖8-1拖曳整個(gè)表到設(shè)計(jì)界面圖8-2拖曳部分字段到設(shè)計(jì)界面
(3)創(chuàng)建完成后的設(shè)計(jì)界面。創(chuàng)建完成后的界面如圖8-3所示,包含GridView與SqlDataSource兩個(gè)控件。
(4)完成GridView控件網(wǎng)頁(yè)的設(shè)計(jì)后按F5鍵運(yùn)行,結(jié)果如圖8-4所示。圖8-3創(chuàng)建完成后的界面圖8-4運(yùn)行結(jié)果8.2GridView與SqlDataSource數(shù)據(jù)處理架構(gòu)簡(jiǎn)介在說(shuō)明GridViewSqlDataSource.aspx代碼之前,必須先看一下GridView與SqlDataSource數(shù)據(jù)處理架構(gòu)。如圖8-5所示,GridView通過(guò)SqlDataSource訪問(wèn)數(shù)據(jù)庫(kù),可以訪問(wèn)各種數(shù)據(jù)庫(kù),包括SQLServer、OracleServer等,也可以讀取XML文件。圖8-5GridView與SqlDataSource數(shù)據(jù)處理架構(gòu)
SqlDataSource包括下列5個(gè)配對(duì)的命令和參數(shù),數(shù)據(jù)庫(kù)處理包括對(duì)數(shù)據(jù)庫(kù)的讀取、更新、新增、刪除、篩選等操作,如表8-1所示。8.2.1GridViewSqlDataSource.aspx代碼
拖曳后所產(chǎn)生的代碼包含兩大部分:GridView控件與SqlDataSource控件,如圖8-6所示。圖8-6GridView控件與SqlDataSource控件上述代碼中以一對(duì)<asp:GridView…>和</asp:GridView>表示GridView控件,用asp:SqlDataSourceID="SqlDataSource1"?表示SqlDataSource控件。8.2.2SqlDataSource數(shù)據(jù)庫(kù)連接字符串
數(shù)據(jù)庫(kù)連接字符串是用于記錄連接數(shù)據(jù)庫(kù)的信息,如服務(wù)器名稱、登錄用戶、密碼、連接的數(shù)據(jù)庫(kù)等。
數(shù)據(jù)庫(kù)連接字符串經(jīng)常需要修改,如更改數(shù)據(jù)庫(kù),修改密碼等。因此,如果數(shù)據(jù)庫(kù)連接字符串直接記錄在網(wǎng)頁(yè)代碼中,則一旦要更改連接字符串,必須修改所有網(wǎng)頁(yè)的數(shù)據(jù)庫(kù)連接字符串,這會(huì)造成系統(tǒng)維護(hù)困難。
比較好的方法是將數(shù)據(jù)庫(kù)連接字符串記錄在Web.Config中,如果需要修改,在Web.Config中修改即可。由于Web.Config文件是一個(gè)標(biāo)準(zhǔn)的XML文件,因此,ASP.NET會(huì)在運(yùn)行時(shí)(Run-Time)從Web.Config文件的<ConnectionString>節(jié)點(diǎn)中找到連接字符串的有關(guān)信息。
(1)?SqlDataSource連接數(shù)據(jù)庫(kù)及屬性設(shè)置語(yǔ)法。將整個(gè)表拖曳到設(shè)計(jì)窗口時(shí),VisualStudio2005自動(dòng)在SqlDataSource中設(shè)置ConnectionString與ProviderName屬性。
SqlDataSource連接數(shù)據(jù)庫(kù),屬性設(shè)置語(yǔ)法如下:
<asp:SqlDataSourceID=“SqlDataSource1”>
ProviderName=
“<%$s:連接字符串.ProviderName%>
ConnectionString=
”<%$ConnectionStrings:連接字符串名稱%>
必須設(shè)置ConnectionString屬性為連接字符串,ProviderName屬性為提供程序名稱。
VisualStudio2005也同時(shí)自動(dòng)生成了一個(gè)Web.Config文件,并且生成了ConnectionString區(qū)塊,雙擊“解決方案資源管理器”中的Web.Config文件即可打開(kāi)Web.Config文件。
Web.Config連接字符串的語(yǔ)法如下:
<ConnectionStrings>
<addname=“連接字符串名稱1”ConnectionString=“連接字符串”ProviderName=“數(shù)據(jù)提供程序名稱”/>
<addname=“連接字符串名稱2”ConnectionString=“連接字符串”ProviderName=“數(shù)據(jù)提供程序名稱”/>
</ConnectionString>
如果要新增連接字符串,則必須在<ConnectionString></ConnectionString>區(qū)塊內(nèi)加入,甚至可以加入不同的連接字符串,作為連接到不同數(shù)據(jù)庫(kù)的方式。
(2)?SqlDataSource連接數(shù)據(jù)庫(kù)及數(shù)據(jù)綁定到Web.config的方式。SqlDataSource連接數(shù)據(jù)庫(kù)屬性是如何綁定到Web.Config的呢?在aspx代碼中,連接字符串?dāng)?shù)據(jù)綁定的語(yǔ)法為<%$...%>,其中AppConnectionString1必須對(duì)應(yīng)到Web.Config的ConnectionString屬性的AppConnectionString1。8.2.3GridView與SqlDataSource的連接方式
將GridView控件拖曳到設(shè)計(jì)界面時(shí),系統(tǒng)會(huì)自動(dòng)生成GridView與SqlDataSource兩個(gè)控件。這兩個(gè)控件是如何連接的呢?如下列代碼所示,讀者可以發(fā)現(xiàn)SqlDataSource的ID屬性是SqlDataSource1,將GridView的DataSourceID的屬性設(shè)置為SqlDataSource1,按照此方式進(jìn)行連接。
<asp:GridViewID=“GridView1”Runat=“Server”
DataSourceID=“SqlDataSource1”>
…
</asp:GridView>
<asp:SqlDataSourceID=“SqlDataSource1”>
…
</asp:SqlDataSource>8.2.4GridView與SqlDataSource配合讀取顯示數(shù)據(jù)
GridView與SqlDataSource的讀取顯示數(shù)據(jù)方式如下:
(1)?SqlDataSource使用命令讀取ID、title、name、putdate、putman字段數(shù)據(jù)。
(2)?GridView通過(guò)五個(gè)BoundColumn字段在界面上顯示字段數(shù)據(jù)。因此,GridView字段必須對(duì)應(yīng)到SqlDataSourceSelectCommand字段。
(3)當(dāng)GridView顯示的表沒(méi)有任何數(shù)據(jù)時(shí),會(huì)顯示EmptyDataText屬性的內(nèi)容,如下列代碼所示。8.3使用智能標(biāo)記設(shè)置GridView
智能標(biāo)記是VisualStudio2005的新增功能,一些比較復(fù)雜的控件都提供智能標(biāo)記,可以快速設(shè)置控件。8.3.1打開(kāi)與關(guān)閉智能標(biāo)記打開(kāi)智能標(biāo)記有下列兩種方法。方法1:?jiǎn)螕魣D標(biāo),打開(kāi)智能標(biāo)記,如圖8-7所示。方法2:?jiǎn)螕羰髽?biāo)右鍵,利用快捷菜單打開(kāi)智能標(biāo)記,如圖8-8所示。如果要關(guān)閉智能標(biāo)記,則只需要單擊設(shè)計(jì)界面的其他地方即可。圖8-7打開(kāi)智能標(biāo)記的方法1圖8-8打開(kāi)智能標(biāo)記的方法28.3.2GridView智能標(biāo)記功能簡(jiǎn)介
智能標(biāo)記功能如圖8-9所示。圖8-9智能標(biāo)記功能8.4GridView添加分頁(yè)功能當(dāng)用GridView顯示表時(shí),如果表的數(shù)據(jù)行數(shù)超過(guò)頁(yè)面所能顯示的行數(shù),那么此時(shí)就需要使用分頁(yè)功能。8.4.1添加分頁(yè)功能為GridView添加分頁(yè)功能非常簡(jiǎn)單,只需在智能標(biāo)記中選中“啟用分頁(yè)”復(fù)選框即可,具體操作步驟如下所述。
(1)選中“啟用分頁(yè)”復(fù)選框,如圖8-10所示。圖8-10選中“啟用分頁(yè)”復(fù)選框
(2)單擊GridView智能標(biāo)記后,生成代碼。選中“啟用分頁(yè)”復(fù)選框后,系統(tǒng)自動(dòng)加入代碼AllowPaging=“True”,如下列代碼所示:
<asp:GridViewID=“GridView1”Runat=“server”
…
AllowPaging=“True”
(3)?GridViewSqlDataSource.aspx運(yùn)行分頁(yè)功能。按F5鍵運(yùn)行后會(huì)出現(xiàn)分頁(yè)按鈕,可單擊數(shù)字按鈕切換不同頁(yè),如圖8-11所示。圖8-11運(yùn)行分頁(yè)功能頁(yè)面8.4.2利用“分頁(yè)”屬性組設(shè)置分頁(yè)按鈕的功能及外觀
在“分頁(yè)”(PagerSettings)屬性組中有很多屬性可設(shè)置分頁(yè)按鈕的功能和外觀,說(shuō)明如表8-2所示。
1.Mode屬性設(shè)置
Mode的屬性設(shè)置如表8-3所示。
2.Position屬性設(shè)置
此屬性用于設(shè)置分頁(yè)按鈕顯示在GridView的位置,如表8-4所示。8.4.3GridView的PagerStyle分頁(yè)樣式設(shè)置
GridView的PagerStyle屬性組可設(shè)置GridView相關(guān)按鈕的樣式,如圖8-12所示。
其中,兩個(gè)屬性的說(shuō)明如下:
(1)HorizontalAlign用于設(shè)置分頁(yè)按鈕的水平對(duì)齊方式,共有4種設(shè)置,分別為L(zhǎng)eft、Center、Right和Justify。
(2)?VerticalAlign用于設(shè)置分頁(yè)按鈕的垂直對(duì)齊方式,共有3種設(shè)置,分別為Top、Middle和Bottom。圖8-12設(shè)置樣式8.4.4設(shè)置分頁(yè)樣式與“分頁(yè)”屬性組
可以通過(guò)設(shè)置分頁(yè)樣式與“分頁(yè)”屬性組來(lái)改變分頁(yè)按鈕的外觀。
(1)設(shè)置分頁(yè)樣式與“分頁(yè)”屬性組,代碼如下:
<asp:GridViewID=“GridView1”…>
<PagerStyleHorizontalAlign=“Center”>
</PagerStyle>
<PagerSettingsPageButtonCount=“3”Mode=“NumericFirstLast”>
</PagerSettings>
</asp:GridView>
HorizontalAlign=“Center”:設(shè)置居中對(duì)齊。
PageButtonCount="3":設(shè)置分頁(yè)按鈕有3個(gè)數(shù)字按鈕。
Mode="NumericFirstLast":設(shè)置分頁(yè)模式,顯示上一頁(yè)、下一頁(yè)和數(shù)字。
(2)設(shè)置分頁(yè)屬性樣式后按F5鍵運(yùn)行。按F5鍵運(yùn)行后界面如圖8-13所示,用戶可以發(fā)現(xiàn),分頁(yè)按鈕已經(jīng)改為居中對(duì)齊,并且分頁(yè)按鈕已經(jīng)改成“>>>”,這是因?yàn)橛涗洈?shù)量不夠所致。圖8-13運(yùn)行后的頁(yè)面8.4.5GridView分頁(yè)事件簡(jiǎn)介
分頁(yè)事件包括下列兩個(gè)事件:一個(gè)是事件處理前,另一個(gè)是事件處理后。用戶可以加入代碼新增控制分頁(yè)的功能。
(1)?PageIndexChanging事件:在GridView處理該控件之前,當(dāng)單擊分頁(yè)按鈕時(shí)觸發(fā)。代碼如下:
protectedvoidGridView1_PageIndexChanging(objectsender,
GridViewPageEventArgse)
{
…
}
表8-5所示為GridView控件的PageIndexChanging事件參數(shù)。
e.NewPageIndex可取得分頁(yè)后頁(yè)數(shù)的索引。0-base索引的意義是:0代表第1頁(yè),1代表第2頁(yè),2代表第3頁(yè),以此類推。
(2)?PageIndexChanged事件:在GridView處理該事件后,當(dāng)單擊分頁(yè)按鈕時(shí)觸發(fā)。其代碼如下(參數(shù)為一般事件參數(shù)):
protectedvoidGridView1_PageIndexChanged(objectsender,
EventArgse)
{
…
}8.5GridView添加排序功能
GridView排序功能可以讓用戶單擊GridView字段標(biāo)題,以便進(jìn)行數(shù)據(jù)排序。
(1)在GridView的智能標(biāo)記中,添加排序功能非常簡(jiǎn)單,只需選中智能標(biāo)記的“啟用排序”復(fù)選框即可,如圖8-14所示。圖8-14選中智能標(biāo)記的“啟用排序”復(fù)選框
(2)系統(tǒng)自動(dòng)加入代碼。選中智能標(biāo)記“啟用排序”復(fù)選框后,系統(tǒng)自動(dòng)加入AllowString=“ture”。
(3)?GridViewSqlDataSource.aspx添加排序功能后按F5鍵運(yùn)行,運(yùn)行后的頁(yè)面如圖8-15所示。圖8-15運(yùn)行后的頁(yè)面8.5.1與排序有關(guān)的代碼
例如下列代碼,首先必須設(shè)置AllowSorting="Ture"的狀態(tài)為允許排序。在GridView的Columns字段,設(shè)置SortExpress屬性為排序字段。8.5.2GridView排序事件簡(jiǎn)介
排序事件包括以下兩個(gè):一個(gè)是事件處理前,另一個(gè)是事件處理后。
(1)?Sorting事件:在GridView處理該事件前,當(dāng)單擊排序按鈕時(shí)觸發(fā)。事件代碼如下:
protectedvoidGridView1_Sorting(objectsender,GridViewSortEventArgse)
{
…
}
其中,GridViewSortEventArgs的參數(shù)說(shuō)明如表8-6所示。
(2)?Sorted事件:在GridView處理該事件之后,當(dāng)單擊排序按鈕時(shí)觸發(fā)。事件代碼如下:
protectedvoidGridView1_Sorted(objectsender,EventArgse)
{
…
}8.6GridView添加選擇功能在GridView中添加選擇按鈕后,GridView每一行都會(huì)出現(xiàn)選擇按鈕,用戶單擊行的選擇按鈕后會(huì)觸發(fā)事件,可以添加事件代碼響應(yīng)用戶的選擇。要對(duì)GridView添加選擇功能,只需在智能標(biāo)記內(nèi)選中“啟用選定內(nèi)容”復(fù)選框即可。
(1)打開(kāi)智能標(biāo)記,選中“啟用選定內(nèi)容”復(fù)選框,如圖8-16所示。圖8-16添加選擇功能
(2)選中“啟用選定內(nèi)容”復(fù)選框后,系統(tǒng)自動(dòng)加入CommandField,如下列代碼所示。CommandField字段設(shè)置ShowSelectButton=“True”,并且顯示選擇按鈕。
<asp:CommandFieldShowSelectButton=“True”/>
(3)?GridViewSqlDataSource.aspx添加“選擇”按鈕后按F5鍵運(yùn)行,運(yùn)行效果如圖8-17所示。圖8-17運(yùn)行效果8.6.1GridView選擇事件簡(jiǎn)介
選擇事件包括如下兩個(gè):一個(gè)是事件處理前,另一個(gè)是事件處理后。
1.SelectedIndexChanging事件
在GridView處理該事件之前,當(dāng)用戶單擊“選擇”按鈕時(shí)觸發(fā)。事件代碼如下:
protectedvoidGridView1_SelectedIndexChanging(object
sender,GridViewSelectEventArgse)
{
…
}
其中,GridViewSelectEventArgs的參數(shù)說(shuō)明如表8-7所示。
2.SelectedIndexChanged事件
在GridView處理該事件后,單擊“選擇”按鈕時(shí)觸發(fā)。事件代碼如下:
protectedvoidGridView1_SelectedIndexChanged(object
sender,EventArgse)
{
…
}8.6.2事件代碼范例
例如下列事件的代碼設(shè)置,一旦Discontinued的字段值是true,則不允許選擇。
(1)添加SelectedIndexChanged事件代碼,即當(dāng)用戶選擇時(shí),將會(huì)觸發(fā)GridView1_SelectedIndexChanged事件,首先判斷GridView的第3個(gè)字段是否選擇,也就是Discontinued字段。如果已選擇,則設(shè)置e.Cancel=true;如果取消該事件,則不允許選擇。
(2)添加SelectedIndexChanged事件代碼,即當(dāng)用戶選擇時(shí),將會(huì)觸發(fā)GridView1_SelectedIndexChanged事件,顯示選擇行的第二個(gè)字段,也就是ProductName字段。
(3)?GridViewSqlDataSource.aspx添加選擇按鈕后按F5鍵運(yùn)行。8.7GridView添加編輯功能
GridView編輯功能可以讓用戶編輯行,并且更新數(shù)據(jù)庫(kù)的數(shù)據(jù)。
(1)選中“啟用編輯”復(fù)選框添加編輯功能。要對(duì)GridView添加編輯功能,只需在智能標(biāo)記內(nèi)選中“啟用編輯”復(fù)選框即可,如圖8-18所示。圖8-18添加編輯功能
(2)選中“啟用編輯”復(fù)選框添加編輯功能后,系統(tǒng)自動(dòng)生成代碼。選中“啟用編輯”復(fù)選框后,系統(tǒng)將會(huì)自動(dòng)在CommandField字段中添加“ShowEditButton=”True“”。代碼如下:
<asp:CommandFieldShowSelectButton=“True”
ShowEditButton=“True”/>
(3)按F5鍵運(yùn)行。運(yùn)行后的頁(yè)面如圖8-19所示。圖8-19運(yùn)行后的頁(yè)面
(4)修改內(nèi)容頁(yè)面如圖8-20所示。圖8-20修改內(nèi)容頁(yè)面
(5)修改完成后的頁(yè)面如圖8-21所示。圖8-21修改完成后的頁(yè)面8.7.1與編輯相關(guān)的代碼說(shuō)明
代碼說(shuō)明如下:
(1)更新數(shù)據(jù)要使用PrimaryKey,且必須設(shè)置DataKeyNames=“ID”。
(2)必須設(shè)置顯示“編輯”按鈕。
(3)UpdateCommand中的四個(gè)參數(shù)@title、@name、@putdate、@putman必須對(duì)應(yīng)UpdateParameter的參數(shù)title、name、putdate和putman。
(4)?WHERE設(shè)置為@original_ID,必須對(duì)應(yīng)UpdateParameter參數(shù)ID。在UpdateCommand中WHERE子句為@original_ID,而不是@ID,這是因?yàn)楦聰?shù)據(jù)必須使用更新前的值。為了區(qū)分更新前與更新后的數(shù)據(jù),可以設(shè)置OldValuesParameterFormat-
String屬性的值,代表字段名稱之前加上original_為更新前的值。
提示:OldValuesParameterFormatString屬性在Beta中默認(rèn)值為original_{0},但是在正式版本中其默認(rèn)值為{0}。為了區(qū)分修改前與修改后的值,本書所有范例的OldValuesParameter-
FormatString屬性仍設(shè)置為original_{0}。8.7.2與GridView編輯相關(guān)的事件簡(jiǎn)介
與編輯相關(guān)的事件共有4種,如表8-8所示,分別處理用戶編輯的每個(gè)階段,可以使用e.Cancel或e.KeepInEditMode來(lái)控制編輯的流程。8.7.3RowEditing事件
在某些情況下,客戶數(shù)據(jù)只允許所屬業(yè)務(wù)人員才能修改,或者如果訂單數(shù)據(jù)已經(jīng)出貨,則不能修改,此時(shí)就必須判斷數(shù)據(jù)內(nèi)容來(lái)決定是否可以修改??梢栽赗owEditing事件中加入代碼進(jìn)行判斷。RowEditing事件在單擊“編輯”按鈕時(shí)觸發(fā),但必須在GridView處理該事件之前。
RowEditing事件的代碼如下:
protectedvoidGridView1_RowEditing(objectsender,
GridViewEditEventArgse)
{
…
}
其中,GridViewEditEventArgs的參數(shù)說(shuō)明如表8-9所示??梢允褂胑.NewEditIndex取得目前編輯的行索引,并加以判斷,如果不允許修改,則只要設(shè)置e.Cancel=true即可取消該事件。8.7.4RowUpdating事件
當(dāng)單擊“編輯”按鈕輸入修改的內(nèi)容,再單擊“更新”按鈕時(shí),會(huì)觸發(fā)RowUpdating事件,用戶可以編寫程序來(lái)判斷是否允許用戶更新數(shù)據(jù)。
在GridView處理RowUpdating事件之前,單擊“更新”按鈕會(huì)觸發(fā)該事件。RowUpdating事件的代碼如下:
protectedvoidGridView1_RowUpdating(objectsender,
GridViewEditEventArgse)
{
…
}
其中,GridViewUpdateEventArgs的參數(shù)說(shuō)明如表8-10所示。
IOrderedDictionary為有序的DictionaryEntry集合,DictionatyEntry包括Key與Value兩種屬性,用戶可以用ForEach語(yǔ)法讀取。8.7.5RowUpdated事件
當(dāng)單擊“編輯”按鈕輸入修改的內(nèi)容,再單擊“更新”按鈕時(shí),首先GridView將更新數(shù)據(jù)庫(kù),然后觸發(fā)RowUpdated事件。注意,RowUpdated與RowUpdating事件不同,RowUpdating是更新數(shù)據(jù)庫(kù)之前觸發(fā),而RowUpdated則是更新數(shù)據(jù)庫(kù)之后觸發(fā)。用戶可以添加某些代碼來(lái)處理異常,例如將修改內(nèi)容寫入修改記錄文件。更新數(shù)據(jù)到數(shù)據(jù)庫(kù)時(shí)若發(fā)生錯(cuò)誤,則必須處理該錯(cuò)誤。在GridView處理RowUpdated事件之后,單擊“更新”按鈕時(shí)觸發(fā)該事件。
RowUpdated事件代碼如下:
protectedvoidGridView1_RowUpdated(objectsender, GridViewUpdatedEventArgse)
{
…
}
其中,GridViewUpdatedEventArgs的參數(shù)說(shuō)明如表8-11所示。8.7.6RowCancelingEdit事件
單擊“編輯”按鈕輸入修改內(nèi)容,再單擊“取消”按鈕時(shí),即可觸發(fā)RowCancelingEdit事件。
RowCancelingEdit事件代碼如下:
protectedvoidGridView1_RowCancelingEdit(objectsender, GridViewCancelEditEventArgse)
{
…
}
其中,GridViewCancelEditEventArgs的參數(shù)說(shuō)明如表8-12所示。8.8
GridView添加刪除功能可以讓用戶單擊“刪除”按鈕來(lái)刪除數(shù)據(jù)。
(1)在智能標(biāo)記處選中“啟動(dòng)刪除”復(fù)選框。要對(duì)GridView添加刪除功能,只需在智能標(biāo)記處選中“啟動(dòng)刪除”復(fù)選框即可,如圖8-22所示。圖8-22選中“啟動(dòng)刪除”復(fù)選框
(2)
選中“啟動(dòng)刪除”復(fù)選框后,系統(tǒng)將會(huì)自動(dòng)在CommandField字段中加入ShowDeleteButton=“True”,代碼如下:
<asp:CommandFieldShowSelectButton=“True”
ShowEditButton=“True”ShowDeleteButton=“True”/>
(3)按F5鍵運(yùn)行,結(jié)果如圖8-23所示。圖8-23運(yùn)行結(jié)果8.8.1與刪除功能相關(guān)的代碼
代碼說(shuō)明如下:
(1)數(shù)據(jù)主鍵值:刪除數(shù)據(jù)必須使用主鍵,因此需要設(shè)置主鍵值為DataKeyNames=“ID”。
(2)顯示Delete按鈕:設(shè)置GridView顯示Delete按鈕。
(3)刪除數(shù)據(jù)參數(shù):在用戶單擊“刪除”按鈕后,刪除數(shù)據(jù)的主鍵值ID會(huì)傳入<DeleteParameters>的刪除數(shù)據(jù)參數(shù)。
(4)刪除數(shù)據(jù)命令:DeleteCommand與DeleteParameters結(jié)合,生成刪除數(shù)據(jù)的SQL語(yǔ)句,該語(yǔ)句可在數(shù)據(jù)庫(kù)中刪除數(shù)據(jù)。
需要注意的是,DeleteCommand的WHERE子句的@original_ID參數(shù)必須與DeleteParameters的ID參數(shù)相互對(duì)應(yīng),其原因與8.7節(jié)談到的UpdateCommand相同。8.8.2RowDeleting事件
當(dāng)用戶單擊“刪除”按鈕時(shí)會(huì)觸發(fā)RowDeleting事件,用戶可以編寫程序來(lái)判斷是否允許用戶刪除數(shù)據(jù)。
在GridView處理RowDeleting事件之前,單擊“更新”按鈕時(shí)觸發(fā)該事件。
RowDeleting事件的代碼如下:
protectedvoidGridView1_RowDeleting(objectsender, GridViewDeleteEventArgse)
{
…
}
其中,GridViewDeleteEventArgs的參數(shù)說(shuō)明如表8-13所示。8.9GridView的外觀設(shè)置可以設(shè)置GridView的外觀,使界面更加美觀。
(1)在智能標(biāo)記處選擇“自動(dòng)套用格式”選項(xiàng)來(lái)設(shè)置格式。設(shè)置GridView外觀最簡(jiǎn)單的方法是使用“自動(dòng)套用格式”,如圖8-24所示。
(2)選擇方案如圖8-25所示。
(3)
按F5鍵運(yùn)行。運(yùn)行后用戶可以發(fā)現(xiàn)GridView的外觀已經(jīng)自動(dòng)套用格式,如圖8-26所示。圖8-24選擇“自動(dòng)套用格式”選項(xiàng)圖8-25“自動(dòng)套用格式”對(duì)話框圖8-26運(yùn)行后的頁(yè)面
(4)自動(dòng)生成代碼。設(shè)置后VisualStudio2005會(huì)自動(dòng)生成下列代碼。用戶可以發(fā)現(xiàn)下列代碼添加了很多對(duì)樣式的設(shè)置,這部分內(nèi)容將在8.9.1節(jié)中說(shuō)明。8.9.1GridView的樣式介紹
在“屬性”窗口的Styles組中可設(shè)置各種不同的樣式,其說(shuō)明如圖8-27所示。圖8-27GridView的樣式說(shuō)明8.9.2GridView的外觀與布局屬性
另外,還可以設(shè)置GridView的外觀與布局屬性。
1.外觀屬性(Apperance)
外觀屬性的說(shuō)明如表8-14所示。
2.布局屬性(LayOut)
布局屬性的說(shuō)明如表8-15所示。8.10GridView字段8.10.1GridView字段簡(jiǎn)介在前面的范例中,用戶已經(jīng)了解了BoundField與CheckboxField字段,本節(jié)將介紹更多字段,這些字段可以在編輯列窗口中看到(如圖8-28所示)。GridView字段用于顯示表字段,對(duì)于不同的字段數(shù)據(jù)類型會(huì)使用不同的字段。GridView包含如表8-16所列的字段。圖8-28GridView字段8.10.2設(shè)置字段的共同屬性
GridView根據(jù)字段的不同,其屬性也不一樣,但是有些屬性是相同的,如表8-17所示。每個(gè)字段都可設(shè)置如表8-18所示的樣式。8.10.3創(chuàng)建ExampleGridView.aspx范例程序
(1)在現(xiàn)有項(xiàng)目中添加新項(xiàng),創(chuàng)建名為ExampleGridView.aspx的Web窗體。從工具箱中拖曳GridView控件和SqlDataSource控件到頁(yè)面上,如圖8-29所示。
(2)設(shè)置GridView控件后,在智能標(biāo)記處選中所有“啟用……”復(fù)選框,如圖8-30所示。
(3)按F5鍵運(yùn)行,運(yùn)行結(jié)果如圖8-31所示。圖8-29創(chuàng)建GridView與SqlDataSource控件圖8-30啟用所有功能圖8-31運(yùn)行結(jié)果8.11設(shè)置命令字段命令字段(CommandField)用于顯示“編輯”、“刪除”、“選擇”、“更新”、“取消”的按鈕,前面的范例用文字來(lái)表示按鈕,接下來(lái)將示范以按鈕方式顯示編輯命令。下面介紹如何設(shè)置CommandField。
(1)在智能標(biāo)記上,選擇“編輯列”選項(xiàng),如圖8-32所示。圖8-32選擇“編輯列”選項(xiàng)
(2)設(shè)置CommandField的ButtonType屬性為Button。在字段編輯頁(yè)面,先選中要修改的字段,然后右方會(huì)出現(xiàn)該字段的屬性。其中,ButtonType屬性為設(shè)置按鈕的類型,用戶可以設(shè)置為Button、Image或Link三種方式,本范例設(shè)置為Button,如圖8-33所示。圖8-33設(shè)置CommandField
(3)設(shè)置完成后,在設(shè)計(jì)界面將看到以圖片形式出現(xiàn)的按鈕,如圖8-34所示。
(4)運(yùn)行后的按鈕圖標(biāo)如圖8-35所示。
(5)?GridViewCoulmn.aspxCommndField的相關(guān)代碼。完成設(shè)置后,代碼如下:
<asp:CommandFieldButtonType=“Button” ShowDeleteButton=“True”ShowEditButton=“True”
ShowSelectButton="True"/>圖8-34設(shè)計(jì)完成后的界面圖8-35運(yùn)行后的按鈕圖標(biāo)8.12設(shè)置數(shù)據(jù)綁定字段數(shù)據(jù)綁定字段(BoundField)將數(shù)據(jù)以文字方式顯示,顯示數(shù)據(jù)時(shí)以控件顯示,編輯數(shù)據(jù)時(shí)以控件顯示,如圖8-36所示。圖8-36范例顯示8.12.1數(shù)據(jù)綁定字段簡(jiǎn)介
1.?dāng)?shù)據(jù)綁定字段的常用屬性
數(shù)據(jù)綁定字段的常用屬性如表8-19所示。
2.DataFormatString屬性設(shè)置
DataFormatString屬性用于設(shè)置數(shù)據(jù)顯示格式,其設(shè)置格式如表8-20所示。8.12.2修改ExampleGridView.aspx顯示貨幣的格式
例如,price字段為價(jià)格,此時(shí)可以設(shè)置格式為貨幣格式。
(1)設(shè)置price的DataFormatString屬性{0,d},如圖8-37所示。
(2)設(shè)置貨幣格式后按F5鍵運(yùn)行,運(yùn)行后的頁(yè)面如圖8-38所示。圖8-37設(shè)置DataFormatString屬性圖8-38運(yùn)行的后頁(yè)面8.13設(shè)置超鏈接字段超鏈接字段(HyperLink)可以設(shè)置超鏈接連接到其他網(wǎng)頁(yè)。當(dāng)用戶單擊“title”字段時(shí),可連接到“物品詳細(xì)信息”網(wǎng)頁(yè)。超鏈接字段將數(shù)據(jù)以超鏈接顯示,所以用戶必須設(shè)置兩個(gè)字段:其一為顯示字段,另一個(gè)為URL字段。超鏈接字段會(huì)在運(yùn)行期間自動(dòng)生成超鏈接字符串。兩個(gè)字段說(shuō)明如表8-21所示。例如,設(shè)置屬性值如下:
(1)?DataNavigateUrlFormatString屬性為infodetails.aspx?ID={0}&title={1}。
(2)?DataNavigateUrlFormatString屬性為ID,title。
其中,{0}、{1}代表兩個(gè)格式化字符串的參數(shù),系統(tǒng)會(huì)在運(yùn)行期間自動(dòng)置換ID和title的值來(lái)生成超鏈接。
當(dāng)讀取第1條數(shù)據(jù)時(shí),ProductID=1,title=第一件商品信息aa,則生成的超鏈接字符串為infoDetails.aspx?ProductID=1&title=第一件商品信息aa。當(dāng)讀取第2條數(shù)據(jù)時(shí),ID=3,title=程序員教程便宜賣了??!,則生成的超鏈接字符串為infodetails.aspx?ID=3&title=程序員教程便宜賣了??!,依次類推。
通過(guò)以上介紹,我們對(duì)GridView控件的特點(diǎn)有了一個(gè)基本的了解,并知道在GridView中可以通過(guò)使用超鏈接字段來(lái)實(shí)現(xiàn)頁(yè)面的跳轉(zhuǎn)。下面通過(guò)一個(gè)項(xiàng)目任務(wù)來(lái)實(shí)現(xiàn)頁(yè)面轉(zhuǎn)移。項(xiàng)目任務(wù)8-1在GridView中使用超鏈接字段實(shí)現(xiàn)頁(yè)面轉(zhuǎn)移
【要求】設(shè)置一個(gè)新的超鏈接字段,用來(lái)顯示產(chǎn)品名稱,當(dāng)用戶單擊超鏈接字段時(shí),可連接到“物品詳細(xì)信息”頁(yè)面。
【步驟】
(1)首先必須添加HyperLink字段,如圖8-39所示。圖8-39“字段”對(duì)話框
(2)按照表8-22所示的屬性設(shè)置超鏈接字段,單擊“確定”按鈕。其中,設(shè)置Target屬性為_(kāi)blank,讓物品詳細(xì)信息打開(kāi)另一個(gè)瀏覽器,如圖8-40所示。
提示:應(yīng)該如何選擇DataNavigateUrlField呢?一般來(lái)講,選擇能唯一標(biāo)識(shí)此行記錄的幾個(gè)字段作為DataNavigateUrlField,也就是主鍵字段。本例中,ID是主鍵字段,只需要選擇該字段即可。圖8-40設(shè)置超鏈接字段屬性
(3)刪除已經(jīng)存在的title字段,并調(diào)整屬性列的次序,如圖8-41所示。
(4)按F5鍵運(yùn)行。運(yùn)行后,當(dāng)單擊超鏈接字段時(shí)會(huì)鏈接到“物品詳細(xì)信息”網(wǎng)頁(yè),如圖8-42所示。注意,infodetails.aspx頁(yè)面必須存在。
infodetails.aspx是使用DetailView控件與SqlDataSource參數(shù)創(chuàng)建的,這部分內(nèi)容將會(huì)在第9章中介紹。圖8-41調(diào)整次序圖8-42運(yùn)行后的頁(yè)面
(5)設(shè)置完成后,GridViewColumn.aspx超鏈接字段的相關(guān)代碼如下:
<asp:HyperLinkFieldDataNavigateUrlFields=“ID”
DataNavigateUrlFormatString=“infodetails.aspx?ID={0}”
DataTextField="title"HeaderText="標(biāo)題"Target="_blank"/>8.14設(shè)置按鈕字段8.14.1創(chuàng)建按鈕字段下面介紹如何創(chuàng)建按鈕字段。
(1)添加“購(gòu)買”按鈕。首先按照如圖8-43所示的步驟添加“購(gòu)買”按鈕。
(2)設(shè)置完成后,按鈕字段相關(guān)代碼如下:
<asp:ButtonFieldCommandName="goumai"HeaderText="購(gòu)買"Text="購(gòu)買"/>注意:后續(xù)事件代碼會(huì)判斷CommandName屬性,決定用戶按了哪個(gè)按鈕。這里設(shè)置為“goumai”。圖8-43添加“購(gòu)買”按鈕8.14.2創(chuàng)建RowCommand事件
前面已創(chuàng)建了按鈕字段,但是運(yùn)行后,單擊按鈕沒(méi)有任何反應(yīng)。必須為RowCommand添加代碼,才能有所反應(yīng)。
當(dāng)用戶單擊更新按鈕時(shí)觸發(fā)RowCommand事件,但是必須在GridView處理該事件之前。RowCommand事件的語(yǔ)法如下:
protectedvoidGridView1_RowCommand(objectsender, GridViewCommandEventArgse)
{
…
}
其中,GridViewCommandEventArgs的參數(shù)說(shuō)明如表8-23所示。
(1)創(chuàng)建GridView1_R
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 護(hù)理三基模擬習(xí)題(附參考答案解析)
- 力的分解與合成-高考物理一輪復(fù)習(xí)
- 2025至2030年中國(guó)電子閱讀器行業(yè)市場(chǎng)全景評(píng)估及發(fā)展戰(zhàn)略規(guī)劃報(bào)告
- 2025至2030年中國(guó)有色金屬礦采選行業(yè)發(fā)展監(jiān)測(cè)及市場(chǎng)發(fā)展?jié)摿︻A(yù)測(cè)報(bào)告
- 2025至2030年中國(guó)版權(quán)轉(zhuǎn)讓行業(yè)發(fā)展監(jiān)測(cè)及行業(yè)市場(chǎng)深度研究報(bào)告
- 2025至2030年中國(guó)中小企業(yè)貸款行業(yè)競(jìng)爭(zhēng)格局分析及投資戰(zhàn)略咨詢報(bào)告
- MySQL數(shù)據(jù)庫(kù)應(yīng)用實(shí)戰(zhàn)教程(慕課版)(第2版) 教案全套 洪曉芳 第1-9單元 MySQL概述 -MySQL管理
- 新課程標(biāo)準(zhǔn)背景下小學(xué)數(shù)學(xué)單元整體教學(xué)的實(shí)踐策略
- 工廠防漏補(bǔ)漏工程合同范本
- 新疆維吾爾自治區(qū)部分學(xué)校2024-2025學(xué)年高二下學(xué)期7月聯(lián)考地理試卷(含答案)
- 無(wú)人機(jī)培訓(xùn)機(jī)構(gòu)運(yùn)營(yíng)管理方案
- 河南省鄭州市2023-2024學(xué)年高一下學(xué)期6月期末物理試題(解析版)
- 物業(yè)管理公司市場(chǎng)拓展方案
- GB 35181-2025重大火災(zāi)隱患判定規(guī)則
- 針刀室管理制度
- 醫(yī)療投訴管理培訓(xùn)
- 提升門施工方案
- 皮內(nèi)注射完整版本
- 危險(xiǎn)化品安全管理培訓(xùn)
- 華西醫(yī)院管理
- 2025年昆明市官渡區(qū)國(guó)有資產(chǎn)投資經(jīng)營(yíng)有限公司招聘筆試參考題庫(kù)附帶答案詳解
評(píng)論
0/150
提交評(píng)論