如何设置排名表的自动值? [英] How to set auto values for ranking table?

查看:66
本文介绍了如何设置排名表的自动值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好,我想在表格上设置自动编号排名,以使排名最高的得分手排在第一位,依此类推.我有一个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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆