日期:2014-05-18  浏览次数:20393 次

将动态生成的表中数据按 hits 字段降序排序,且只取出前 10条数据,详情请进! 100 分


我用以下方法动态生成了一张表:

-------------------------------------------------

DataTable   mytable=new   DataTable();
row=mytable.NewRow();
mytablele.Columns.Add(new   DataColumn( "Uname ",typeof(string)));
mytablele.Columns.Add(new   DataColumn( "Hits ",typeof(string)));

//省去循环生成表数据过程....

//将mytable数据绑定到Repeater1上
this.Repeater1.DataSource   =   mytable;  
this.Repeater1.DataBind();

现在的问题是:
1.我想让动态生成的这张表   mytable   中的数据按字段   Hits   降序排序
2.我只想让   Repeater1   显示   mytable   表中前   10   条数据


这样的要求,要如何对动态生成的这张表   mytable   做处理   呢,是不是用到   DataView   来做什么转换呢?请高手指教,不胜感激!!!

------解决方案--------------------
最好在直接数据库里面提取前十条

如果你是在程序里生成的话

你可以在DataTable加一个自增字段
到时候绑定的时候只绑定 id <11的就可以了
------解决方案--------------------
为简单期间,这是个GridView绑定的例子。改成Repeater完全可以,关键是前面的数据处理

<%@ Page Language= "C# " AutoEventWireup= "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)));
System.Data.DataColumn column = new System.Data.DataColumn();
column.ColumnName = "id ";
column.AutoIncrement = true;
column.AutoIncrementSeed = 1;
column.AutoIncrementStep = 1;
dt.Columns.Add(column);

for (int i = 0; i < 20; 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;
}

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
System.Data.DataView dv = new System.Data.DataView(CreateDataSourceByXianhuiMeng());
dv.RowFilter = "id <11 ";
dv.Sort = "计算机 DESC ";

GridView1.DataSource = dv;
GridView1.DataBind();
}
}
</script>

<html xmlns= "http://www.w3.org/1999/xhtml ">
<head id= "Head1 " runat= "server ">
<title> </title>
</head>
<body id= &q