使用javascript操作table排序才是实用的排序,这样排序不怎么好,但是有时候可能会用来,记录一下。
前台:
代码
@ Page Language
=
"
C#
"
AutoEventWireup
=
"
true
"
CodeFile
=
"
GridViewSort.aspx.cs
"
Inherits
=
"
GridViewSort
"
%>
<!
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>
<
html
xmlns
="http://www.w3.org/1999/xhtml"
>
<
head
runat
="server"
>
<
title
>
GridView排序简单实现
</
title
>
</
head
>
<
body
>
<
form
id
="form1"
runat
="server"
>
<
div
>
<
asp:GridView
ID
="gdvSort"
runat
="server"
OnSorting
="gdvSort_Sorting"
>
</
asp:GridView
>
</
div
>
</
form
>
</
body
>
</
html
>
后台:
代码
System;
using
System.Data;
using
System.Configuration;
using
System.Collections;
using
System.Web;
using
System.Web.Security;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Web.UI.WebControls.WebParts;
using
System.Web.UI.HtmlControls;
public
partial
class
GridViewSort : System.Web.UI.Page
{
protected
void
Page_Load(
object
sender, EventArgs e)
{
if
(
!
IsPostBack)
{
ViewState[
"
SortOrder
"
]
=
"
PID
"
;
ViewState[
"
OrderDire
"
]
=
"
Desc
"
;
Bind();
}
}
private
void
Bind()
{
gdvSort.AllowSorting
=
true
;
DataView dv
=
getDt().DefaultView;
dv.Sort
=
(
string
)ViewState[
"
SortOrder
"
]
+
"
"
+
(
string
)ViewState[
"
OrderDire
"
];
gdvSort.DataSource
=
dv;
gdvSort.DataBind();
}
///
<summary>
///
连数据库麻烦,直接构造一个DataTable
///
</summary>
///
<returns></returns>
private
DataTable getDt()
{
DataTable dt
=
new
DataTable();
dt.Columns.Add(
"
PID
"
,
typeof
(System.Int32));
dt.Columns.Add(
"
UserName
"
,
typeof
(System.String));
for
(
int
i
=
0
; i
<
10
; i
++
)
{
DataRow dr
=
dt.NewRow();
dr[
"
PID
"
]
=
i;
dr[
"
UserName
"
]
=
"
姓名
"
+
i;
dt.Rows.Add(dr);
}
return
dt;
}
protected
void
gdvSort_Sorting(
object
sender, GridViewSortEventArgs e)
{
string
sPage
=
e.SortExpression;
if
(ViewState[
"
SortOrder
"
].ToString()
==
sPage)
{
if
(ViewState[
"
OrderDire
"
].ToString()
==
"
Desc
"
)
{
ViewState[
"
OrderDire
"
]
=
"
Asc
"
;
}
else
{
ViewState[
"
OrderDire
"
]
=
"
Desc
"
;
}
}
else
ViewState[
"
SortOrder
"
]
=
e.SortExpression;
Bind();
}
}