999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

ASP.NET 2.0中GridView的排序方法

2008-12-31 00:00:00林勤花
考試周刊 2008年11期

摘 要:在ASP.NET 2.0中GridView控件代替了ASP.NET 1.1中的DataGrid控件,該控件通常用于顯示數據庫查詢結果。排序是我們在處理數據時經常會碰到的一類操作,GridView控件支持順序排序和逆序排序。本文介紹在GridView控件中實現排序功能的三種方法。

關鍵詞:GridView 排序

在ASP.NET 2.0中可以使用GridView控件自帶的AllowSorting屬性、AJAX技術或用戶自定義方式來實現排序功能。下面我們具體介紹這三種方法。

一、設置AllowSorting屬性來實現排序

只要用過GridView控件的就會發現實現排序功能很簡單,只需要把該控件的AllowSorting屬性設置為True就可以實現了。代碼清單1中的頁面演示如何對Pubs數據庫中的jobs數據表進行排序。

代碼清單1 SortGrid.aspx

<body>

<form id=″form1″ runat=″server″>

<div>

<asp:GridView ID=″grdJobs″ runat=″Server″ AllowSorting=″true″

DataSourceID=″SqlDataSource1″></asp:GridView>

<asp:SqlDataSource ID=″SqlDataSource1″ runat=″server″ ConnectionString=″<%$ ConnectionStrings:pubsConnectionString %>″

SelectCommand=″SELECT * FROM [jobs]″></asp:SqlDataSource>

</div>

</form>

</body>

當AllowSorting屬性設置為True的時候,GridView的列標題就變成鏈接。點擊列標題,就可以根據選中的列對GridView中的記錄進行排序。但是要注意,當顯式指定GridView控件的列時,例如綁定列,則需要指定列的SortExpression值才能支持排序,否則,點擊此列的標題不會對數據排序。具體實現如代碼清單2所示。

代碼清單2

<body>

<form id=″form1″ runat=″server″>

<div>

<asp:GridView ID=″grdJobs″ runat=″Server″ AllowSorting=″true″

AutoGenerateColumns=″1″ DataSourceID=″SqlDataSource1″>

<Columns>

<asp:BoundFieldDataField=″job_id″HeaderText=″job_id″

SortExpression=″job_id″/>

<asp:BoundFieldDataField=″job_desc″ HeaderText=″job_desc″

SortExpression=″job_desc″/>

<asp:BoundFieldDataField=″min_lvl″ HeaderText=″min_lvl″

SortExpression=″min_lvl″/>

<asp:BoundFieldDataField=″max_lvl″ HeaderText=″max_lvl″

SortExpression=″max_lvl″/>

</Columns>

</asp:GridView>

<asp:SqlDataSource ID=″SqlDataSource1″ runat=″server″ ConnectionString=″<%$ ConnectionStrings:pubsConnectionString %>″

SelectCommand=″SELECT * FROM [jobs]″></asp:SqlDataSource>

</div>

</form>

</body>

二、 使用AJAX排序

默認情況下,無論何時在GridView中點擊列名時將觸發整頁的PostBack,使包含此控件的頁面都會回發到服務器端。但更多時候我們只想對頁面GridView控件中的數據進行排序,而頁面中其他內容不動,使用AJAX(Asynchronous JavaScript and XML)技術可以實現該操作。在聲明GridView的時候將EnableSortingAndPagingCallbacks屬性設置為True就可以啟用AJAX。代碼清單3中的頁面在排序的時候就使用了AJAX。

代碼清單3 AjaxSort.aspx

<body>

<form id=″form1″ runat=″server″>

<div>

<%=DateTime.Now.ToString() %>

<asp:GridView ID=″grdJobs″ runat=″Server″ AllowSorting=″true″

EnableSortingAndPagingCallbacks=″true″

DataSourceID=″SqlDataSource1″></asp:GridView>

<asp:SqlDataSource ID=″SqlDataSource1″ runat=″server″ ConnectionString=″<%$ ConnectionStrings:pubsConnectionString %>″

SelectCommand=″SELECT * FROM [jobs]″></asp:SqlDataSource>

</div>

</form>

</body>

在代碼清單3中,在頁面的頂部顯示當前時間。但是在GridView中排序數據的時候這個時間并沒有改變,這就說明并不是整個頁面都被提交給服務器端,只有GridView控件的內容被提交更新。

三、 用戶自定義排序界面

多次點擊列標題,記錄就會在順序和逆序之間進行切換,但是在列標題上沒有一個顯示升序降序的圖標,這會讓最終用戶使用時產生迷惑,因為不知道是升序了還是降序了。避免這種情況可以通過響應GridView控件的RowDataBound事件定制排序鏈接的外觀。在為GridView控件綁定到數據源后,呈現每一行記錄時都會觸發這個事件。代碼清單4就用圖片來顯示數據列的排序狀態。

代碼清單4 ImageSorting.aspx

<body>

<form id=″form1″ runat=″server″>

<div>

<asp:GridView ID=″grdJobs″ runat=″Server″ AllowSorting=″true″

DataSourceID=″SqlDataSource1″

OnRowDataBound=″grdJobs_RowDataBound″></asp:GridView>

<asp:SqlDataSource ID=″SqlDataSource1″ runat=″server″ ConnectionString=″<%$ ConnectionStrings:pubsConnectionString %>″

SelectCommand=″SELECT * FROM [jobs]″></asp:SqlDataSource>

</div>

</form>

</body>

當用戶點擊列標題時,將觸發事件protected void grdJobs_RowDataBound(object sender, GridViewRowEventArgs e),其程序代碼如下:

protected void grdJobs_RowDataBound(object sender, GridViewRowEventArgs e)

{

if (e.Row.RowType == DataControlRowType.Header)

{

foreach (TableCell cell in e.Row.Cells)

{

LinkButton SortLink = (LinkButton)cell.Controls;

if (SortLink.Text == grdJobs.SortExpression)

{

if(grdJobs.SortDirection == SortDirection.Ascending)

SortLink.Text += ″<img src=’asc.gif’ title=’Sort ascending’>″;

else

SortLink.Text += ″<img src=’desc.gif' title=’Sort descending’>″;

}

}

}

}

在代碼清單4中,圖片是通過grdJobs_RowDataBound方法添加到標題行的。當前行的RowType屬性用來確定當前行是否是標題行,然后,在選中排序列的LinkButton中添加一個HTML<img>標簽。

該頁面執行后結果如圖1所示。用戶從圖1中可以看到在job_id列標題旁有個向下的箭頭,就很清楚現在GridView控件中的數據是按job_id降序顯示的。當用戶再次點擊job_id列標題時,該標題旁會有個向上的箭頭,表示當前是升序顯示。

總之,ASP.NET 2.0中的GridView控件的排序功能簡單、快捷,而且很容易掌握。上述的三種方法,基本上可以滿足用戶的需求,用戶可以根據自己的需要選擇適合自己的方法。

參考文獻:

[1]Stephen Walther,ASP.NET 2.0揭秘.人民郵電出版社,2007年10月.

[2]江廣順,余松.ASP.NET 2.0+SQL Server熱門網絡應開開發詳解.人民郵電出版社,2007年3月.

主站蜘蛛池模板: 丰满少妇αⅴ无码区| 国产亚洲欧美日本一二三本道| 亚洲欧美国产视频| 尤物成AV人片在线观看| 国产日韩欧美成人| 无码高潮喷水在线观看| 中日无码在线观看| 午夜限制老子影院888| 在线观看国产网址你懂的| 又爽又大又光又色的午夜视频| 一级毛片免费高清视频| 国产成人精品18| 在线精品视频成人网| 国产日韩久久久久无码精品| 少妇极品熟妇人妻专区视频| 色婷婷亚洲综合五月| 美女无遮挡免费网站| 亚洲中文字幕在线观看| 国产在线一区视频| 福利片91| 熟妇无码人妻| 九色视频一区| 伊人色综合久久天天| 午夜国产大片免费观看| 亚洲有无码中文网| 一本久道久综合久久鬼色| 亚洲色婷婷一区二区| 久久精品国产免费观看频道| 国产swag在线观看| 久久久久亚洲精品成人网| 麻豆精品在线| 亚洲经典在线中文字幕| 91成人免费观看在线观看| 国产成人精品高清在线| 亚洲综合香蕉| 2022国产无码在线| 亚洲日本一本dvd高清| 狠狠色狠狠综合久久| 国产午夜不卡| 国产麻豆va精品视频| 91小视频版在线观看www| 97国产在线播放| 国产成人高清在线精品| 成人福利免费在线观看| 波多野结衣亚洲一区| 亚洲激情区| 2020国产精品视频| 成人在线观看不卡| 国产激爽爽爽大片在线观看| 久久国产免费观看| 91在线国内在线播放老师| 嫩草国产在线| 毛片网站免费在线观看| 偷拍久久网| 日本午夜三级| 亚洲经典在线中文字幕| 成人伊人色一区二区三区| 亚洲国产精品无码久久一线| 青草国产在线视频| 国产精品视频免费网站| 欧美综合成人| 97精品国产高清久久久久蜜芽 | 91青青在线视频| 婷婷激情亚洲| 五月激激激综合网色播免费| 日本国产精品| 日本不卡在线播放| 国产又爽又黄无遮挡免费观看 | 精品国产自| 国产精品观看视频免费完整版| 国产色伊人| 国内精品免费| 免费一看一级毛片| 一级毛片在线直接观看| 毛片免费试看| 亚洲人成网址| 日韩AV无码一区| 久久精品国产精品一区二区| 成人综合网址| 欧洲一区二区三区无码| 午夜视频免费一区二区在线看| 亚洲无码精品在线播放|