點擊GridView的標題,實現相應欄位的正向、逆向排序。
1. 首先設定GridView的屬性,觸發GridView的事件。
設定GridView的AllowSorting屬性為True, 設定各列的SortExpression為相應的欄位標題。
Code
<Columns>
<asp:BoundField DataField="PersonID" HeaderText="ID" SortExpression="ID" />
<asp:BoundField DataField="PersonName" HeaderText="姓名" SortExpression="姓名" />
<asp:BoundField DataField="GroupName" HeaderText="分組" SortExpression="分組" />
<asp:BoundField DataField="CellPhone" HeaderText="手機" SortExpression="手機" />
<asp:BoundField DataField="Remark" HeaderText="備忘" SortExpression="備忘" />
<asp:CommandField ShowEditButton="True" />
<asp:CommandField ShowDeleteButton="True" />
</Columns>
觸發GridView的Sorting事件。
2. 後台代碼:
頁面載入:
Code
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//頁面載入時,是按照PersonID的順序排列
ViewState["PersonID"] = "PersonID";
ViewState["OrderDir"] = "asc";
//綁定資料
BindAll();
}
}
綁定資料:
Code
private void BindAll()
{
//讀取資料庫中的資料列表
DataTable dt = dalPerson.SelectAll();
DataView view = dt.DefaultView;
string sort = (string)ViewState["PersonID"] + " " + (string)ViewState["OrderDir"];
view.Sort = sort ;
GrdPerson.DataSource = view;
//綁定資料
GrdPerson.DataBind();
}
Sorting事件:
Code
protected void GrdPerson_Sorting(object sender, GridViewSortEventArgs e)
{
string orderStr = "";
switch (e.SortExpression)
{
case "ID": orderStr = "PersonID"; break;
case "姓名": orderStr = "PersonName"; break;
case "分組": orderStr = "GroupName"; break;
case "手機": orderStr = "CellPhone"; break;
case "備忘": orderStr = "Remark"; break;
}
ViewState["PersonID"] = orderStr;
if (ViewState["OrderDir"].ToString() == "desc")
{
ViewState["OrderDir"] ="ASC";
}
else
{
ViewState["OrderDir"] = "desc";//asc
}
BindAll();
}