1.设置AllowSorting="True"
2.点击GridView的事件onsorting="GridView1_Sorting"
3.利用GridView的Sort属性,页面在ViewState中存储主键和排序,默认是升序,ViewState["OrderDire"] = "ASC";;由于要在分页事件中实现能再排回来,所以再在分页事件中添加ViewState["OrderDire"] = "Desc";
全部代码如下:
public partial class WebForm1 : System.Web.UI.Page
{
string strcon="Data Source=.;Initial Catalog=db_TomeTwo;Integrated Security=True";
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ViewState["SortOrder"] = "au_id";
ViewState["OrderDire"] = "ASC";
Bind();
}
}
public void Bind()
{
string strsel="select * from authors";
SqlConnection conn=new SqlConnection (strcon);
SqlCommand com=new SqlCommand (strsel,conn);
SqlDataAdapter sda=new SqlDataAdapter (com);
DataSet ds=new DataSet();
conn.Open();
sda.Fill(ds,"authors");
DataView dw = ds.Tables["authors"].DefaultView;
string strsort = (string)ViewState["SortOrder"] + "," + (string)ViewState["OrderDire"];
//Response.Write(strsort);
dw.Sort = strsort;
//GridView1.DataSource=ds.Tables["authors"];
GridView1.DataSource = dw;
GridView1.DataBind();
conn.Close();
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
Bind();
}
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
string spage = e.SortExpression;
if (ViewState["SortOrder"].ToString() == spage)
{
if (ViewState["OrderDire"].ToString() == "Desc")
{
ViewState["OrderDire"] = "ASC";
}
else
{
ViewState["OrderDire"] = "Desc";
}
}
else
{
ViewState["SortOrder"] = e.SortExpression;
}
Bind();
}
}