public
partial
class
自定义分页 : System.Web.UI.Page
{
protected
void
Page_Load(
object
sender, EventArgs e)
{
if
(
!
Page.IsPostBack)
{
DataLoad();
}
}
///
<summary>
///
数据加载
///
</summary>
private
void
DataLoad()
{
string
sortedField
=
""
;
//
获取排序字段的信息
if
(ViewState[
"
SortedField
"
]
!=
null
)
{
//
如果存在排序信息,则将排序信息转换为字典存储
Dictionary
<
string
,
string
>
sorted
=
(Dictionary
<
string
,
string
>
)ViewState[
"
SortedField
"
];
//
便利取值
foreach
(KeyValuePair
<
string
,
string
>
kvp
in
sorted)
{
//
key排序字段,value排序信息
sortedField
=
kvp.Key
+
"
"
+
kvp.Value;
}
}
//
数据绑定
this
.GridView1.DataSource
=
GetContents(sortedField);
this
.GridView1.DataBind();
}
protected
void
GridView1_RowDataBound(
object
sender, GridViewRowEventArgs e)
{
#region
//
加排序的头方法
//
判断是否是表头
if
(e.Row.RowType
==
DataControlRowType.Header)
{
//
判断是否进行排序
if
(ViewState[
"
SortedField
"
]
!=
null
)
{
//
恢复排序信息
Dictionary
<
string
,
string
>
order
=
(Dictionary
<
string
,
string
>
)ViewState[
"
SortedField
"
];
//
循环表头的单元格,判断是否有需要排序的单元格
for
(
int
i
=
0
; i
<
e.Row.Cells.Count; i
++
)
{
if
(e.Row.Cells[i].Controls.Count
>
0
)
{
//
是否是排序字段信息
LinkButton lb
=
e.Row.Cells[i].Controls[
0
]
as
LinkButton;
if
(lb
!=
null
)
{
//
反序和降序
if
(order.ContainsKey(lb.CommandArgument))
{
Literal li
=
new
Literal();
if
(order[lb.CommandArgument]
==
"
ASC
"
)
{
li.Text
=
"
▲
"
;
}
else
{
li.Text
=
"
▼
"
;
}
//
e.Row.Cells[i].Controls.Add(li);
}
}
}
}
}
}
#endregion
完成排序
}
protected
void
GridView1_Sorting(
object
sender, GridViewSortEventArgs e)
{
//
Dictionary
<
string
,
string
>
sorted
=
new
Dictionary
<
string
,
string
>
();
//
从ViewState读取上一次的排序信息。
if
(ViewState[
"
SortedField
"
]
==
null
)
{
//
如果没有排序信息,则将当前点击的对象(即点击的排序字段)和排序信息添加到字典中
sorted.Add(e.SortExpression,
"
ASC
"
);
//
将排序信息放在字典中保存
ViewState[
"
SortedField
"
]
=
sorted;
}
else
{
//
判断是否点击相同的排序,如果是相同的排序,
//
就是用反序
//
如果不是想通的排序,那就新的派讯,是用升序
sorted
=
(Dictionary
<
string
,
string
>
)ViewState[
"
SortedField
"
];
if
(sorted.ContainsKey(e.SortExpression))
{
if
(sorted[e.SortExpression]
==
"
ASC
"
)
{
sorted[e.SortExpression]
=
"
DESC
"
;
}
else
{
sorted[e.SortExpression]
=
"
ASC
"
;
}
}
else
{
sorted.Clear();
sorted.Add(e.SortExpression,
"
ASC
"
);
ViewState[
"
SortedField
"
]
=
sorted;
}
}
//
重新加载数据
DataLoad();
}
}