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月.

主站蜘蛛池模板: 国产不卡国语在线| 99色亚洲国产精品11p| 欧美激情综合一区二区| 日本高清免费不卡视频| 国产精彩视频在线观看| 成人国产精品网站在线看| 国产AV毛片| 久久亚洲国产视频| 国产精品第页| 欧美一级特黄aaaaaa在线看片| 国产区免费| 伊人大杳蕉中文无码| 高清无码手机在线观看 | 国产一区二区精品福利| 欧美精品1区2区| 欧美在线精品一区二区三区| 久久综合伊人77777| 国产精品亚洲天堂| 日韩a在线观看免费观看| 久久久国产精品免费视频| 丝袜高跟美脚国产1区| www.99在线观看| 亚洲天堂日韩av电影| 不卡无码h在线观看| 免费女人18毛片a级毛片视频| 亚洲AⅤ无码日韩AV无码网站| 国产一线在线| 欧美日韩一区二区在线播放| 亚洲成aⅴ人在线观看| 欧美三级自拍| 中国国产一级毛片| 99久久精彩视频| 国产欧美精品午夜在线播放| 国模极品一区二区三区| 国产sm重味一区二区三区| 国产精品视屏| 99这里只有精品免费视频| 91久久偷偷做嫩草影院免费看| 亚洲欧美一区在线| 亚洲视频四区| 国产成人三级| 911亚洲精品| 蜜桃臀无码内射一区二区三区 | 爽爽影院十八禁在线观看| 日本高清免费不卡视频| 欧美在线黄| 在线欧美日韩国产| 国产精品手机在线播放| 台湾AV国片精品女同性| 无码区日韩专区免费系列| 国产精品xxx| 大学生久久香蕉国产线观看| 被公侵犯人妻少妇一区二区三区 | 欧美精品1区| 91美女视频在线| 亚洲综合激情另类专区| 九色在线视频导航91| 成人福利在线观看| 国产亚洲精品91| 国产手机在线ΑⅤ片无码观看| 午夜综合网| 亚洲区第一页| 亚洲天堂网在线观看视频| 无码'专区第一页| 婷婷中文在线| 免费在线看黄网址| 亚洲欧美成人在线视频| 午夜精品久久久久久久无码软件| 欧美激情视频在线观看一区| 亚洲精品国产精品乱码不卞| 精品国产成人国产在线| 国产欧美一区二区三区视频在线观看| 萌白酱国产一区二区| 国产精选自拍| 久久精品一品道久久精品| 国产真实乱子伦精品视手机观看 | 欧美在线中文字幕| 熟妇丰满人妻av无码区| 国产成人精品在线| 无码网站免费观看| 国产在线无码一区二区三区| 国产精品区网红主播在线观看|