[英]How can I change the default sort direction when clicking a column in a GridView?
[英]Gridview: capturing sort direction
我在啟用了排序的updatepanel中有一個gridview,並且有一個事件處理程序,如下所示:
protected void MyGridSort(object sender, GridViewSortEventArgs e)
{
var TheDirection = (e.SortDirection).ToString();
var TheColumn = (e.SortExpression).ToString();
}
我在這些行之后放置一個斷點。 每次按下列標題時,變量TheDirection總是顯示升序。
為什么不從上升切換到下降然后返回?
謝謝。
我一直在閱讀,當您手動向gridview提供數據源時,排序似乎中斷了。 不確定是否是您的情況,但這對我有用。
string strSortExpression = e.SortExpression + " ASC";
if (Convert.ToString(ViewState["SortExpression"]) == strSortExpression)
{
strSortExpression = e.SortExpression + " DESC";
}
ViewState["SortExpression"] = strSortExpression;
//This is done by sorting the Default View of the underlying data and then re-binding this
//to the grid.
System.Data.DataTable myData = HttpContext.Current.Session["GridData"] as System.Data.DataTable;
if (myData != null)
{
myData.DefaultView.Sort = strSortExpression;
GridView1.DataSource = myData;
GridView1.DataBind();
}
希望能幫助到你
您可以將方向保持在ViewState或Session中。 像這樣(未經測試的代碼):
protected void MyGridSort(object sender, GridViewSortEventArgs e)
{
var TheDirection = (e.SortDirection).ToString();
var TheColumn = (e.SortExpression).ToString();
string prevColumn = "", prevDirection = "";
if (Session["MyGridSortColumn"] != null)
prevColumn = Session["MyGridSortColumn"].ToString();
if (Session["MyGridSortDirection"] != null)
prevDirection = Session["MyGridSortDirection"].ToString();
if (TheColumn == prevColumn) {
if (prevDirection == "ASC")
TheDirection = "DESC";
else
TheDirection = "ASC";
}
Session["MyGridSortDirection"] = TheDirection;
Session["MyGridSortColumn"] = TheColumn;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.