資料 15 筆,每頁 10 筆。排序時:第一頁對前 10 筆排序,翻第二頁時對後 5 筆**單獨**排序(而非重查資料庫全量排序)。
SortExpression 與 SortDirection(升冪/降冪)。private void grdProjTrace_SortCommand(object source, DataGridSortCommandEventArgs e)
{
this.grdProjTrace.CurrentPageIndex = 0; // 排序重置第一頁
DataView dv = GetDataView(); // 取得資料視圖
string sortExpr = ViewState["SortExpression"] as string;
string sortDir = ViewState["SortDirection"] as string; // "ASC" or "DESC"
if (e.SortExpression == sortExpr)
sortDir = (sortDir == "ASC") ? "DESC" : "ASC"; // 同欄位切換方向
else
sortDir = "ASC"; // 新欄位預設升冪
dv.Sort = e.SortExpression + " " + sortDir;
ViewState["SortExpression"] = e.SortExpression;
ViewState["SortDirection"] = sortDir;
this.grdProjTrace.DataSource = dv;
this.grdProjTrace.DataBind();
}
private void grdProjTrace_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
{
this.grdProjTrace.CurrentPageIndex = e.NewPageIndex;
DataView dv = GetDataView();
string sortExpr = ViewState["SortExpression"] as string;
string sortDir = ViewState["SortDirection"] as string;
if (!string.IsNullOrEmpty(sortExpr))
dv.Sort = sortExpr + " " + sortDir; // 套用相同排序
this.grdProjTrace.DataSource = dv;
this.grdProjTrace.DataBind();
}
ORDER BY),ViewState 僅記錄參數傳給 SQL。GridView (2.0+) 內建 SortExpression/SortDirection 屬性簡化代碼。