前端:.aspx
首先设置GirdView的AllowSorting属性为True
<asp:GridView ID="gv_ReviewIndex" runat="server" AllowPaging="True" AllowSorting="True" />
每一列,包括模板列设置SortExpression需要排序的字段名
<asp:TemplateField HeaderText="评审分数" SortExpression="ReviewSumScore" >
<ItemTemplate>
<asp:Label ID="lb_ReviewScore" runat="server" Text='<%#Eval("ReviewSumScore") %>'></asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:Label ID="Label3" runat="server" Text=""></asp:Label>
</FooterTemplate>
</asp:TemplateField>
后台代码:.aspx.cs 指定Sorting事件处理代码
protected void gv_ReviewIndex_Sorting(object sender, GridViewSortEventArgs e)
{
if (ViewState["SortExpresstion"] != null)
{
if (ViewState["SortExpresstion"].ToString() == e.SortExpression)
{
if (ViewState["SortDirection"].ToString() == "ASC")
{
ViewState["SortDirection"] = "DESC";
}
else
{
ViewState["SortDirection"] = "ASC";
}
}
else
{
ViewState["SortExpresstion"] = e.SortExpression;
ViewState["SortDirection"] = "ASC";
}
}
else
{
ViewState["SortExpresstion"] = e.SortExpression;
ViewState["SortDirection"] = "ASC";
}
SetBind();
}
修改GridView控件绑定代码:
private void SetBind()
{
DataSet ds = new DataSet();
using (SqlConnection conn = new SqlConnection(sConnectionString))
{
SqlDataAdapter da = new SqlDataAdapter("select * from tbReview'", conn);
da.Fill(ds);
}
DataView dv = new DataView(ds.Tables[0]);
if (ViewState["SortExpresstion"] != null)
dv.Sort = ViewState["SortExpresstion"].ToString() + " " + ViewState["SortDirection"].ToString();
gv_ReviewIndex.DataSource = dv;
gv_ReviewIndex.DataBind();
}