string strcon = ConfigurationManager.ConnectionStrings["strcon"].ConnectionString;
protected void Page_Load(object sender, EventArgs e)
{
fun();
}
public void fun()//给gridview绑定数据
{
using (SqlConnection con = new SqlConnection(strcon))
{
con.Open();
using (SqlCommand cmd = con.CreateCommand())
{
string str = "select * from T_Food";
#region 语句执行之前完善语句使语句可以实现排行
if (ViewState["dic"]!=null)
{
Dictionary<string, string> dic = ViewState["dic"] as Dictionary<string, string>;
string receive = string.Empty;
foreach (KeyValuePair<string,string> item in dic)
{
receive += item.Key + " " + item.Value + ",";
}
str = str + " order by " + receive.TrimEnd(',');//完善语句
}
#endregion
cmd.CommandText = str;
SqlDataAdapter ad = new SqlDataAdapter(cmd);
DataTable table = new DataTable();
ad.Fill(table);
GridView1.DataSource = table;
GridView1.DataBind();
}
}
}
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
//排序激发事件
if (ViewState["dic"] == null)//第一次激发排序
{
Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add(e.SortExpression, "asc");//设置排序方式
ViewState["dic"] = dic;//保存排序方式
}
else
{
Dictionary<string, string> dic = ViewState["dic"] as Dictionary<string, string>;
if (dic.ContainsKey(e.SortExpression))//判断是否是上次排序的字段
{
if (dic[e.SortExpression] == "asc")
{
dic[e.SortExpression] = "desc";
}
else
{
dic[e.SortExpression] = "asc";
}
}
else//清除上次的排序方法,从新排序
{
dic.Clear();
dic.Add(e.SortExpression, "asc");
}
}
fun();
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
//数据绑定后激发
//添加上升下降排序图标
if (e.Row.RowType==DataControlRowType.Header)
{
for (int i = 0; i < e.Row.Cells.Count; i++)
{
if (e.Row.Cells[i].Controls.Count>0)
{
LinkButton link = e.Row.Cells[i].Controls[0] as LinkButton;
string sortexp = link.CommandArgument;
if (ViewState["dic"]!=null)//如果排序方法不为空执行添加
{
Dictionary<string, string> dic = ViewState["dic"] as Dictionary<string, string>;
if (dic.ContainsKey(sortexp))
{
Literal li = new Literal();
if (dic[sortexp] == "asc")
{
li.Text = "↑";
}
else
{
li.Text = "↓";
}
e.Row.Cells[i].Controls.Add(li);
}
}
}
}
}
}