还需要设置每一列的SortExpress,然后才能出现排序连接

解决方案 »

  1.   

    还要设置 BoundColumn或ItemTemplate中的 SortExpression 属性,让其指向用来做排序的字段名。同时还要定一个用来响应 OnSortCommand事件的方法:
    <%@ Import Namespace="System.Data" %><html>
    <script language="C#" runat="server">
       
       string SortExpression;   ICollection CreateDataSource() 
       {
          DataTable dt = new DataTable();
          DataRow dr;
          Random Rand_Num = new Random();      dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32)));
          dt.Columns.Add(new DataColumn("StringValue", typeof(string)));
          dt.Columns.Add(new DataColumn("CurrencyValue", typeof(double)));      for (int i = 0; i < 15; i++) 
          {
             dr = dt.NewRow();         dr[0] = i;
             dr[1] = "Item " + i.ToString();
             dr[2] = 1.23 * Rand_Num.Next(1, 15);         dt.Rows.Add(dr);
          }      DataView dv = new DataView(dt);
          dv.Sort=SortExpression;
          return dv;
       }   void Page_Load(Object sender, EventArgs e) 
       {      if (!IsPostBack) 
          {         if (SortExpression == "")
                SortExpression = "IntegerValue";      
             ItemsGrid.DataSource = CreateDataSource();
             ItemsGrid.DataBind();
          }   }   void Sort_Grid(Object sender, DataGridSortCommandEventArgs e) 
       {
          SortExpression = e.SortExpression.ToString();
          ItemsGrid.DataSource = CreateDataSource();
          ItemsGrid.DataBind();
       }</script><body>   <form runat=server>      <h3>DataGrid Sorting Example</h3>      <asp:DataGrid id="ItemsGrid" runat="server"
               BorderColor="black"
               BorderWidth="1"
               CellPadding="3"
               AllowSorting="true"
               OnSortCommand="Sort_Grid"
               AutoGenerateColumns="true">         <HeaderStyle BackColor="#00aaaa">
             </HeaderStyle>      </asp:DataGrid>    </form></body>
    </html>
    [JScript] 
    <%@ Import Namespace="System.Data" %><html>
    <script language="JScript" runat="server">
       
       var SortExpression : String   function CreateDataSource() : ICollection 
       {
          var dt : DataTable = new DataTable();
          var dr : DataRow;
          var Rand_Num : Random = new Random();      dt.Columns.Add(new DataColumn("IntegerValue", Int32));
          dt.Columns.Add(new DataColumn("StringValue", System.String));
          dt.Columns.Add(new DataColumn("CurrencyValue", double));      for (var i : int = 0; i < 15; i++) 
          {
             dr = dt.NewRow();         dr[0] = i;
             dr[1] = "Item " + i.ToString();
             dr[2] = 1.23 * Rand_Num.Next(1, 15);         dt.Rows.Add(dr);
          }      var dv : DataView = new DataView(dt);
          dv.Sort=SortExpression;
          return dv;
       }   function Page_Load(sender, e : EventArgs) 
       {      if (!IsPostBack) 
          {         if (SortExpression == "")
                SortExpression = "IntegerValue";      
             ItemsGrid.DataSource = CreateDataSource();
             ItemsGrid.DataBind();
          }   }   function Sort_Grid(sender, e : DataGridSortCommandEventArgs) 
       {
          SortExpression = e.SortExpression.ToString();
          ItemsGrid.DataSource = CreateDataSource();
          ItemsGrid.DataBind();
       }</script><body>   <form runat=server>      <h3>DataGrid Sorting Example</h3>      <asp:DataGrid id="ItemsGrid" runat="server"
               BorderColor="black"
               BorderWidth="1"
               CellPadding="3"
               AllowSorting="true"
               OnSortCommand="Sort_Grid"
               AutoGenerateColumns="true">         <HeaderStyle BackColor="#00aaaa">
             </HeaderStyle>      </asp:DataGrid>    </form></body>
    </html>