在.aspx页面GridView绑定的表头中,加入“SortExpression”属性,一般是: <asp:BoundField DataField="totalnum" HeaderText="总数" SortExpression="totalnum" /> 如果有模板列的话,也是一样的: <asp:TemplateField HeaderText="总大小(M)" SortExpression="totalfilesize" > <ItemTemplate> <asp:Label ID="Label1" runat="server" ></asp:Label> </ItemTemplate> </asp:TemplateField> 接下来是在.CS中写代码了: protected void Page_Load(object sender, EventArgs e) { if(!Page.IsPostBack) { this.GridView1.Attributes.Add("SortExpression", "totalnum"); this.GridView1.Attributes.Add("SortDirection", "ASC"); Bind();//自己写的GridView绑定方法 } } public void Bind() { string sortExpression = this.GVRSType.Attributes["SortExpression"]; string sortDirection = this.GVRSType.Attributes["SortDirection"]; DataTable dtBind = 要绑定的数据; this.lblOrg.Text = "(" + ro.Name + ")"; if ((!string.IsNullOrEmpty(sortExpression)) && (!string.IsNullOrEmpty(sortDirection))) { dtBind.DefaultView.Sort = string.Format("{0} {1}", sortExpression, sortDirection); } GridView1.DataSource = dtBind; GridView1.DataBind(); } protected void GVRSType_Sorting(object sender, GridViewSortEventArgs e) { string sortExpression = e.SortExpression.ToString(); // 假定为排序方向为“顺序” string sortDirection = "ASC"; // “ASC”与事件参数获取到的排序方向进行比较,进行GridView排序方向参数的修改 if (sortExpression == this.GridView1.Attributes["SortExpression"]) { //获得下一次的排序状态 sortDirection = (this.GridView1.Attributes["SortDirection"].ToString() == sortDirection ? "DESC" : "ASC"); } // 重新设定GridView排序数据列及排序方向 this.GridView1.Attributes["SortExpression"] = sortExpression; this.GridView1.Attributes["SortDirection"] = sortDirection; Bind(); } 有时间看看怎么加个按钮吧!