sorting(三)

http://topic.csdn.net/t/20061218/10/5237620.html

 

http://social.microsoft.com/forums/zh-CN/295/thread/9d3e2371-45bd-49e6-b78e-633fc95422f6/

 

 

 

 

那些属性都是针对数据源控件的,

如果自己排序,需要自己处理数据的,下面是一个可以直接运行的例子

 

Code Snippet

<%@ Page Language="C#" EnableViewState="true" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
  System.Data.DataTable CreateDataSourceByXianhuiMeng()
  {
    System.Data.DataTable dt = new System.Data.DataTable();
    System.Data.DataRow dr;
    dt.Columns.Add(new System.Data.DataColumn("学生班级", typeof(System.String)));
    dt.Columns.Add(new System.Data.DataColumn("学生姓名", typeof(System.String)));
    dt.Columns.Add(new System.Data.DataColumn("语文", typeof(System.Decimal)));
    dt.Columns.Add(new System.Data.DataColumn("数学", typeof(System.Decimal)));
    dt.Columns.Add(new System.Data.DataColumn("英语", typeof(System.Decimal)));
    dt.Columns.Add(new System.Data.DataColumn("计算机", typeof(System.Decimal)));

    for (int i = 0; i < 8; i++)
    {
      System.Random rd = new System.Random(Environment.TickCount * i); ;
      dr = dt.NewRow();
      dr[0] = "班级" + i.ToString();
      dr[1] = "【孟子E章】" + i.ToString();
      dr[2] = System.Math.Round(rd.NextDouble() * 100, 2);
      dr[3] = System.Math.Round(rd.NextDouble() * 100, 2);
      dr[4] = System.Math.Round(rd.NextDouble() * 100, 2);
      dr[5] = System.Math.Round(rd.NextDouble() * 100, 2);
      dt.Rows.Add(dr);
    }
    return dt;
  }

  string sortType = String.Empty;
  protected void Page_Load(object sender, EventArgs e)
  {
    if (sortType == "DESC")
    {
      ViewState["sortType"] = "ASC";
    }
    else
    {
      ViewState["sortType"] = "DESC";
    }
   
    if (!Page.IsPostBack)
    {
      this.gvShop.DataSource = CreateDataSourceByXianhuiMeng();
      this.gvShop.DataBind();
    }
  }


  public void GridViewDataBind(String sortField)
  {
    System.Data.DataView dt = CreateDataSourceByXianhuiMeng().DefaultView;
    dt.Sort = sortField;
    this.gvShop.DataSource = dt;
    this.gvShop.DataBind();
 
  }

  protected void b_Click(object sender, EventArgs e)
  {
    sortType = Convert.ToString(ViewState["sortType"]);
    LinkButton link = sender as LinkButton;

    GridViewDataBind(link.CommandArgument + " " + sortType);
  }

  protected void gvShop_RowCreated(object sender, GridViewRowEventArgs e)
  {
    if (e.Row.RowType == DataControlRowType.Header)
    {
      sortType = Convert.ToString(ViewState["sortType"]);
      LinkButton link = e.Row.FindControl("b") as LinkButton;

      if (sortType == "DESC")
      {
        link.Parent.Controls.Add(new LiteralControl("↓"));
      }
      else
      {
        link.Parent.Controls.Add(new LiteralControl("↑"));
      }
    }
  }
</script>


<body>
  <form id="form1" runat="server">
  <asp:GridView ID="gvShop" runat="server" AutoGenerateColumns="false" OnRowCreated="gvShop_RowCreated">
    <Columns>
      <asp:TemplateField ShowHeader="true">
        <HeaderTemplate>
          <asp:LinkButton ID="b" runat="server" Text="语文" CommandArgument="语文" OnClick="b_Click"></asp:LinkButton>
        </HeaderTemplate>
        <ItemTemplate>
          <p>
            <%#Eval("语文")%></p>
        </ItemTemplate>
      </asp:TemplateField>
    </Columns>
  </asp:GridView>
  </form>
</body>
</html>

 

你可能感兴趣的:(sort)