ASPX:
<table width="778" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td align="center">
<asp:GridView ID="myGridView" runat="server" AllowPaging="True" DataKeyNames="id"
AutoGenerateColumns="False" Width="100%" PageSize="25" OnRowDataBound="myGridView_RowDataBound" AllowSorting="True" OnSorting="myGridView_Sorting" OnPageIndexChanging="myGridView_PageIndexChanging" EmptyDataText="沒有記錄" OnRowCreated="myGridView_RowCreated">
<Columns>
<asp:BoundField HeaderText="序號" />
<asp:BoundField DataField="empno" SortExpression="empno" HeaderText="工號" />
<asp:BoundField DataField="cname" SortExpression="cname" HeaderText="姓名" />
<asp:BoundField DataField="sex" SortExpression="sex" HeaderText="性別" />
<asp:BoundField DataField="age" SortExpression="age" HeaderText="年齡" />
<asp:BoundField DataField="linecode" SortExpression="linecode" HeaderText="拉名" />
<asp:BoundField DataField="hold_date" DataFormatString="{0:MM月dd日yyyy年}" HeaderText="入廠日期" HtmlEncode="False" SortExpression="hold_date"/>
<asp:BoundField DataField="g_time" DataFormatString="{0:MM月dd日yyyy年}" HeaderText="體檢日期" HtmlEncode="False" SortExpression="g_time"/>
<asp:CommandField HeaderText="操作" ShowEditButton="True" />
<asp:TemplateField>
<HeaderTemplate>
<input id="CheckAll" type="checkbox" onclick="selectAll(this)" />
</HeaderTemplate>
<ItemTemplate>
<input id="chkID" name="chkID" type="checkbox" value='<%# Eval("empno")%>' onclick="selectOne(this)" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<HeaderStyle BackColor="Gainsboro" />
<PagerSettings PageButtonCount="15" Visible="False" />
</asp:GridView >
</td>
</tr>
</table>
<table width="778" height="25" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td>
<asp:Label ID="labRecordCount" runat="server"></asp:Label>
<asp:Label ID="labPageCount" runat="server"></asp:Label>
<asp:Label ID="labPageRecord" runat="server"></asp:Label>
</td>
<td align="right">
<asp:LinkButton ID="btnFirst" CommandArgument="first" OnClick="PagerButtonClick" runat="server">首 页</asp:LinkButton>
<asp:LinkButton ID="btnPrev" CommandArgument="prev" OnClick="PagerButtonClick" runat="server">上一页</asp:LinkButton>
<asp:LinkButton ID="btnNext" CommandArgument="next" OnClick="PagerButtonClick" runat="server">下一页</asp:LinkButton>
<asp:LinkButton ID="btnLast" CommandArgument="last" OnClick="PagerButtonClick" runat="server">尾 页</asp:LinkButton>
</td>
</tr>
</table>
CS:


1
using System;
2
using System.Data;
3
using System.Configuration;
4
using System.Collections;
5
using System.Web;
6
using System.Web.Security;
7
using System.Web.UI;
8
using System.Web.UI.WebControls;
9
using System.Web.UI.WebControls.WebParts;
10
using System.Web.UI.HtmlControls;
11
12
13
public partial class ComEmployee : System.Web.UI.Page
14

{
15
protected void Page_Load(object sender, EventArgs e)
16
{
17
if (!IsPostBack)
18
{
19
this.txtDate.Text = DateTime.Now.ToString("MM/dd/yyyy");
20
this.btnGetEmp.Attributes["onclick"] = "changeStatus();";
21
GridViewBind();
22
}
23
}
24
private void GridViewBind()
25
{
26
WebClass.NewEmpClass tmp = new WebClass.NewEmpClass();
27
DataTable dt = tmp.ComEmployyeeList();
28
DataView dv = dt.DefaultView;
29
if (ViewState["SortExpression"] != null)
30
{
31
dv.Sort = ViewState["SortExpression"].ToString() + " " + ViewState["SortDirection"].ToString();
32
}
33
myGridView.DataSource = dv;
34
myGridView.DataBind();
35
labRecordCount.Text = "共<font color='red'>" + dt.Rows.Count.ToString() + "</font>筆記錄";
36
labPageCount.Text = "頁次<font color='blue'>" + (myGridView.PageIndex + 1).ToString() + "</font>/<font color='red'>" + myGridView.PageCount.ToString() + "</font>頁";
37
labPageRecord.Text = "<font color='red'>" + myGridView.PageSize.ToString() + "</font>筆記錄/頁";
38
39
if (dt.Rows.Count == 0)
40
{
41
btnFirst.Visible = false;
42
btnPrev.Visible = false;
43
btnNext.Visible = false;
44
btnLast.Visible = false;
45
46
labRecordCount.Visible = false;
47
labPageCount.Visible = false;
48
labPageRecord.Visible = false;
49
}
50
else if (myGridView.PageCount == 1)
51
{
52
btnFirst.Visible = false;
53
btnPrev.Visible = false;
54
btnNext.Visible = false;
55
btnLast.Visible = false;
56
}
57
58
btnFirst.CommandName = "1";
59
btnPrev.CommandName = (myGridView.PageIndex == 0 ? "1" : myGridView.PageIndex.ToString());
60
btnNext.CommandName = (myGridView.PageCount == 1 ? myGridView.PageCount.ToString() : (myGridView.PageIndex + 2).ToString());
61
btnLast.CommandName = myGridView.PageCount.ToString();
62
BtnValidate();
63
}
64
private void BtnValidate()
65
{
66
if (myGridView.PageIndex + 1 >= myGridView.PageCount)
67
{
68
btnNext.Enabled = false;
69
btnLast.Enabled = false;
70
}
71
else
72
{
73
btnNext.Enabled = true;
74
btnLast.Enabled = true;
75
}
76
if (myGridView.PageIndex + 1 <= 1)
77
{
78
btnPrev.Enabled = false;
79
btnFirst.Enabled = false;
80
}
81
else
82
{
83
btnPrev.Enabled = true;
84
btnFirst.Enabled = true;
85
}
86
}
87
protected void PagerButtonClick(object sender, EventArgs e)
88
{
89
myGridView.PageIndex = Convert.ToInt32(((LinkButton)sender).CommandName) - 1;
90
GridViewBind();
91
}
92
protected void myGridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
93
{
94
myGridView.PageIndex = e.NewPageIndex;
95
GridViewBind();
96
}
97
protected void myGridView_RowDataBound(object sender, GridViewRowEventArgs e)
98
{
99
if (e.Row.RowIndex != -1)
100
{
101
int orderID = this.myGridView.PageIndex * this.myGridView.PageSize + e.Row.RowIndex + 1;
102
e.Row.Cells[0].Text = orderID.ToString();
103
}
104
}
105
protected void myGridView_Sorting(object sender, GridViewSortEventArgs e)
106
{
107
ViewState["SortExpression"] = e.SortExpression;
108
if (ViewState["SortDirection"] == null)
109
{
110
ViewState["SortDirection"] = "asc";
111
}
112
else
113
{
114
if (ViewState["SortDirection"].ToString() == "asc")
115
{
116
ViewState["SortDirection"] = "desc";
117
}
118
else
119
{
120
ViewState["SortDirection"] = "asc";
121
}
122
}
123
GridViewBind();
124
}
125
protected void imgbtnUpdate_Click(object sender, ImageClickEventArgs e)
126
{
127
GridViewBind();
128
}
129
protected void btnGetEmp_Click(object sender, EventArgs e)
130
{
131
string strEmpno = Request.Form.Get("chkID");
132
WebClass.NewEmpClass tmp = new WebClass.NewEmpClass();
133
tmp.CheckNewEmployyee(strEmpno);
134
}
135
protected void myGridView_RowCreated(object sender, GridViewRowEventArgs e)
136
{
137
if (e.Row != null && e.Row.RowType == DataControlRowType.Header)
138
{
139
string strSortBy = (string)ViewState["SortExpression"];
140
string strSortAscending = (string)ViewState["SortAscending"];
141
string strOrder = (strSortAscending == "yes" ? "5" : "6");
142
143
for (int i = 0; i < myGridView.Columns.Count; i++)
144
{
145
if (strSortBy == myGridView.Columns[i].SortExpression)
146
{
147
TableCell cell = e.Row.Cells[i];
148
Label lblSorted = new Label();
149
lblSorted.Font.Name = "webdings";
150
lblSorted.Font.Size = FontUnit.XSmall;
151
lblSorted.Text = strOrder;
152
cell.Controls.Add(lblSorted);
153
}
154
}
155
}
156
}
157
}
158
有点郁闷,在DataGrid中,页面加载的时候默认排序字段会有箭头.
GridView同样的原理就没有.只有点击的时候才有,这样的话在页面加载时就不知道按照什么排序.