DataTable能排序吗?你可以用DataTable.DefaultView.Sort属性来实现在视图中排序.比如:
private void SortByTwoColumns()
{
    // Get the DefaultViewManager of a DataTable.
    DataView view = DataTable1.DefaultView;    // By default, the first column sorted ascending.
    view.Sort = "State, ZipCode DESC";
}

解决方案 »

  1.   

    用DataTable中的方法
    public DataRow[] Select(string filterExpression, string sort);
      

  2.   

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;
    namespace Program
    {
    /// <summary>
    /// ggrd 的摘要说明。
    /// </summary>
    public class ggrd : System.Web.UI.Page
    {
    protected System.Web.UI.HtmlControls.HtmlTable TABLE1;
    protected System.Web.UI.WebControls.DataGrid DataGrid1;
        private SqlDataReader dR;
    private void Page_Load(object sender, System.EventArgs e)
    {
    if(!IsPostBack)
    {
    DataTable dt=new DataTable();
    jyhpublic.DataRead Dread=new jyhpublic.DataRead();

                
    dR=Dread.dRead("select * from ggrd");

    string[] aryField = {"Associate","Fieldname","Fileldvalue","Operate","xixixi"};
    int num=aryField.Length;

    ArrayList al=new ArrayList();

    for(int i=0;i<aryField.Length;i++)
    {
    dt.Columns.Add(new DataColumn(aryField[i], typeof(string)));//设置DataTable的ColumnName,根据不同的字段类型需要设计不同的typeof,最好分开写不要用for循环。
        
    }
    while(dR.Read())
    {
    string str="<a href='images.aspx?images="+dR["images"].ToString()+"' target=_blank>"+dR["image_name"].ToString()+"</a>";

    al.Add(str); }
    if(al.Count%num==0)
    {
    for(int i=0;i<(al.Count/num)*num;i++)
    {
    if(i%num==0)
    {
    DataRow dr=dt.NewRow();
    int a=i;
    int b=i+1;
    int c=i+2;
    int d=i+3;
    int g=i+4;
    dr[aryField[0]] = al[a];
    dr[aryField[1]] = al[b];
    dr[aryField[2]] = al[c];
    dr[aryField[3]] = al[d];
    dr[aryField[4]] = al[g];//设置DataTable的行内容
    dt.Rows.Add(dr);
    }
    }

    }
    if(al.Count%num!=0)
    {
    for(int i=0;i<(al.Count/num)*num;i++)
    {
    if(i%num==0)
    {
    DataRow dr=dt.NewRow();
    int a=i;
    int b=i+1;
    int c=i+2;
    int d=i+3;
    int g=i+4;
    dr[aryField[0]] = al[a];
    dr[aryField[1]] = al[b];
    dr[aryField[2]] = al[c];
    dr[aryField[3]] = al[d];
    dr[aryField[4]] = al[g];//设置DataTable的行内容
    dt.Rows.Add(dr);
    }

    } DataRow haha=dt.NewRow();
    for(int j=0;j<al.Count-(al.Count/num)*num;j++)
    {
       
    int f=(al.Count/num)*num+j;
    haha[aryField[j]]=al[f];

    }
    dt.Rows.Add(haha);
    }
    this.DataGrid1.DataSource=dt;
    this.DataGrid1.DataBind();

    }
         }
    #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion
    }
    }
      

  3.   

    创建一个新的DataTable 把原DataTable里面的列和行重新捣腾一次 
    比较笨的办法
      

  4.   

    DataTable.defaultview.sort("a desc,b desc")
      

  5.   

    DataTable的select方法不可排序
    使用 DataTable1.DefaultView 的Sort 属性实现
      

  6.   

    建议在数据库按要求排好后,在Fill到DataTable。
      

  7.   

    使用DataTable的Select方法查询得到所有的DataRow[], 然后把这些DataRow插入到另外一个DataTable中就可以了,另外说一下,DataGridView.sort = "...";只能改变显示的结果,但是Data Source中的DataTable的内容并没有发生改变,我想以后DataTable会有所改变吧,不过现在确实不支持直接排序,结贴。
      

  8.   

    dataTable.select("order by col1,col2");
      

  9.   

    用DataTable筛选出数据后,赋给GridView,用它排序.很方便的.
      

  10.   

    DataView.sort = "...";只能改变显示的结果,但是Data Source中的DataTable的内容并没有发生改变,
    --------------
    你把DataView做为你要处理的源就不行了吗?
      

  11.   

    DataTable不支持排序,换个思路...
      

  12.   

    datatable的数据的确不支持排序。
    建议用DATAROW。重新装载
      

  13.   

    DataRow[] rowss = dataTable.Select("", "编号 asc");
    这样可以不改变dataTable
    还可以得到所要的数据集
      

  14.   

    DataTable.Select (String, String)  第一个是筛选条件,第二个是排序条件DataTable.Select ("", "ID desc ")