如何设置排名表的自动值? [英] How to set auto values for ranking table?
问题描述
您好,我想在表格上设置自动编号排名,以使排名最高的得分手排在第一位,依此类推.我有一个DataTable,但是它没有像GridView那样按点排序.
有一种方法可以订购DataTable,以便我可以设置自动排名?或以其他方式?
这是我尝试过的:
Rank.asx.cs
Hi I am tring to set an auto numbered rank to a table so as the top scorer will be ranked 1st and so on. I have got a DataTable but it is not ordered by points as is in the GridView.
there is a way to order a DataTable so I can set auto rank? or by different way?
Here is what I tried:
Rank.asx.cs
protected void Page_Load(object sender, EventArgs e)
{
MyAdoHelper.SetRanks("db.mdf", "select player from ranking");
}
MyAdoHelper.cs
MyAdoHelper.cs
public static void SetRanks(string fileName, string sql)
{
DataTable dt = ExecuteDataTable(fileName, sql);//gives the DataTable
int rank = 1;
string player = "";
foreach (DataRow row in dt.Rows)
{
foreach (object myItemArray in row.ItemArray)
{
player = myItemArray.ToString();
string sqlrank="update ranking set rank='"+rank+"' where player='"+player+"'";
MyAdoHelper.DoQuery("db.mdf", sqlrank);
rank++;
}
}
}
有什么想法吗?
在此先感谢:D
Any ideas?
Thanks in advance :D
推荐答案
构造一个DataView,并为其指定列名称以进行排序:
Construct a DataView, and give it a column name to sort on:
public static void SetRanks(string fileName, string sql)
{
DataTable dt = ExecuteDataTable(fileName, sql);//gives the DataTable
int rank = 1;
string player = "";
DataView dv = new DataView(dt, "", "rank", DataViewRowState.CurrentRows);
foreach (DataRowView dr in dv)
{
DataRow row = dr.Row;
foreach (object myItemArray in row.ItemArray)
{
player = myItemArray.ToString();
string sqlrank="update ranking set rank='"+rank+"' where player='"+player+"'";
MyAdoHelper.DoQuery("db.mdf", sqlrank);
rank++;
}
}
}
[edit + edit2]出于某些奇怪的原因,当我按下Submit时,代码消失了--OriginalGriff [/edit + edit2]
[edit + edit2]For some weird reason, the code disappeared when I pressed submit... - OriginalGriff[/edit + edit2]
感谢您提供不错的解决方案!
(这是最终版本)
Rank.aspx.cs
Thank you for that nice solution!
(here is the final version)
Rank.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
MyAdoHelper.SetRanks("db.mdf", "select player, allPoints from ranking");
}
MyAdoHelper.cs
MyAdoHelper.cs
public static void SetRanks(string fileName, string sql)
{
DataTable dt = ExecuteDataTable(fileName, sql);//gives the DataTable
int rank = 1;
string player = "";
DataView dv = new DataView(dt, "","allPoints DESC", DataViewRowState.CurrentRows);
foreach (DataRowView dr in dv)
{
DataRow row = dr.Row;
int num = 1;
foreach (object myItemArray in row.ItemArray)
{
if (num == 1)//if it checks the ''player'' field
{
player = myItemArray.ToString();
string sqlrank = "update ranking set rank=''" + rank + "'' where player=''" + player + "''";
MyAdoHelper.DoQuery("db.mdf", sqlrank);
rank++;
num++;
}
}
}
}
这篇关于如何设置排名表的自动值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!