当前位置:编程学习 > C#/ASP.NET >>

怎么使用DataTable的select方法来实现多列排序,急!

各位大侠,
   现在又一个DataTable,我想用其select方法实现类似“Column1 asc, Column2 asc”进行排序,当然不用select方法也行,但是要保证datatable内部数据也相应的改变了,我该怎么办呢?各位先谢谢了。 --------------------编程问答-------------------- 我也想知道!! --------------------编程问答-------------------- 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";
}

--------------------编程问答-------------------- 用DataTable中的方法
public DataRow[] Select(string filterExpression, string sort); --------------------编程问答-------------------- 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
}
}
--------------------编程问答-------------------- 创建一个新的DataTable 把原DataTable里面的列和行重新捣腾一次 
比较笨的办法 --------------------编程问答-------------------- DataTable.defaultview.sort("a desc,b desc") --------------------编程问答-------------------- 我只是去查了一下单词怎么拼写,结果答案已经从1个变成6个了,快~~~ --------------------编程问答-------------------- DataTable的select方法不可排序
使用 DataTable1.DefaultView 的Sort 属性实现 --------------------编程问答-------------------- 建议在数据库按要求排好后,在Fill到DataTable。 --------------------编程问答-------------------- 使用DataTable的Select方法查询得到所有的DataRow[], 然后把这些DataRow插入到另外一个DataTable中就可以了,另外说一下,DataGridView.sort = "...";只能改变显示的结果,但是Data Source中的DataTable的内容并没有发生改变,我想以后DataTable会有所改变吧,不过现在确实不支持直接排序,结贴。 --------------------编程问答-------------------- dataTable.select("order by col1,col2"); --------------------编程问答-------------------- 用DataTable筛选出数据后,赋给GridView,用它排序.很方便的. --------------------编程问答-------------------- DataView.sort = "...";只能改变显示的结果,但是Data Source中的DataTable的内容并没有发生改变,
--------------
你把DataView做为你要处理的源就不行了吗? --------------------编程问答-------------------- up --------------------编程问答-------------------- DataTable不支持排序,换个思路... --------------------编程问答-------------------- datatable的数据的确不支持排序。
建议用DATAROW。重新装载 --------------------编程问答-------------------- 帮忙顶一下 --------------------编程问答-------------------- 顶顶吧 --------------------编程问答-------------------- DataRow[] rowss = dataTable.Select("", "编号 asc");
这样可以不改变dataTable
还可以得到所要的数据集 --------------------编程问答-------------------- mark --------------------编程问答-------------------- 继续关注 --------------------编程问答-------------------- DataTable.Select (String, String)  

第一个是筛选条件,第二个是排序条件

DataTable.Select ("", "ID desc ") --------------------编程问答-------------------- up
引用 8 楼 sbqcel 的回复:
DataTable的select方法不可排序
使用   DataTable1.DefaultView   的Sort   属性实现
--------------------编程问答-------------------- 用 DataView 
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,