GridView手动双向排序并加上排序图标
前台代码并没有什么就是一个GridView控件
主要是后台代码:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
public partial class Sort : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GridView1.DataSource = this.GetDataset();
GridView1.DataKeyNames = new String[] { "id" };
GridView1.DataBind();
ViewState["OrderDire"] = " Desc";
}
}
private string gvSortExpression
{
get
{
if (ViewState["SortOrder"] != null && ViewState["SortOrder"].ToString() != string.Empty)
{
return ViewState["SortOrder"].ToString();
}
else
{
return "";
}
}
set
{
ViewState["SortOrder"] = value;
}
}
private DataSet GetDataset()
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Personal"].ConnectionString);
conn.Open();
SqlDataAdapter adp = new SqlDataAdapter("select * from information", conn);
DataSet dataset = new DataSet();
adp.Fill(dataset, "information");
conn.Close();
return dataset;
}
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
gvSortExpression = e.SortExpression;
if (ViewState["OrderDire"].ToString() == " Desc")
{
ViewState["OrderDire"] = " ASC";
}
else
{
ViewState["OrderDire"] = " Desc";
}
DataView dataview = this.GetDataset().Tables[0].DefaultView;
string sort = gvSortExpression + " " + ViewState["OrderDire"].ToString();
dataview.Sort = sort;
GridView1.DataSource = dataview;
GridView1.DataKeyNames = new String[] { "id" };
GridView1.DataBind();
}
protected void ShowSortedIcon(GridView gvData, GridViewRow gvRow)
{
for (int index = 0; index <= gvData.Columns.Count - 1; index++)
{
if ((gvData.Columns[index].SortExpression == gvSortExpression) && (gvData.Columns[index].SortExpression !=""))
{
Image img = new Image();
if ((string)ViewState["OrderDire"] == " ASC")
{
img.ImageUrl = "~/Images/SortUp.gif";
img.ToolTip = "递增排列";
}
else
{
img.ImageUrl = "~/Images/SortDown.gif";
img.ToolTip = "递减排列";
}
gvRow.Cells[index].Controls.Add(img);
}
}
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
ShowSortedIcon(GridView1, e.Row);
}
}
}
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
public partial class Sort : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GridView1.DataSource = this.GetDataset();
GridView1.DataKeyNames = new String[] { "id" };
GridView1.DataBind();
ViewState["OrderDire"] = " Desc";
}
}
private string gvSortExpression
{
get
{
if (ViewState["SortOrder"] != null && ViewState["SortOrder"].ToString() != string.Empty)
{
return ViewState["SortOrder"].ToString();
}
else
{
return "";
}
}
set
{
ViewState["SortOrder"] = value;
}
}
private DataSet GetDataset()
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Personal"].ConnectionString);
conn.Open();
SqlDataAdapter adp = new SqlDataAdapter("select * from information", conn);
DataSet dataset = new DataSet();
adp.Fill(dataset, "information");
conn.Close();
return dataset;
}
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
gvSortExpression = e.SortExpression;
if (ViewState["OrderDire"].ToString() == " Desc")
{
ViewState["OrderDire"] = " ASC";
}
else
{
ViewState["OrderDire"] = " Desc";
}
DataView dataview = this.GetDataset().Tables[0].DefaultView;
string sort = gvSortExpression + " " + ViewState["OrderDire"].ToString();
dataview.Sort = sort;
GridView1.DataSource = dataview;
GridView1.DataKeyNames = new String[] { "id" };
GridView1.DataBind();
}
protected void ShowSortedIcon(GridView gvData, GridViewRow gvRow)
{
for (int index = 0; index <= gvData.Columns.Count - 1; index++)
{
if ((gvData.Columns[index].SortExpression == gvSortExpression) && (gvData.Columns[index].SortExpression !=""))
{
Image img = new Image();
if ((string)ViewState["OrderDire"] == " ASC")
{
img.ImageUrl = "~/Images/SortUp.gif";
img.ToolTip = "递增排列";
}
else
{
img.ImageUrl = "~/Images/SortDown.gif";
img.ToolTip = "递减排列";
}
gvRow.Cells[index].Controls.Add(img);
}
}
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
ShowSortedIcon(GridView1, e.Row);
}
}
}