将动态生成的表中数据按 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