学生名称 课程1 课程2 课程3
XXX 89 76 100
YYY 72 93 98
ZZZ 97 72 67现在点击课程1已经实现正反排序,如何在三门课程分数前面各加上一个排序号,会根据后面的分数排序变化。如:按照课程1降序排列后结果应该如下:学生名称 课程1 课程2 课程3
ZZZ 1 97 3 72 3 67
XXX 2 89 2 76 1 100
YYY 3 72 1 93 2 98
按照您的方法解决如下:
OleDbConnection conn=new OleDbConnection(connStr);
OleDbDataAdapter MyCommand = new OleDbDataAdapter("SELECT 学生名称,课程1,课程2,课程3 FROM chengji", conn);
DataSet ds = new DataSet();
MyCommand.Fill(ds, "chengji");
DataView Source = ds.Tables["chengji"].DefaultView;
Source.Table.Columns.Add( "名次1",typeof(int));
Source.Table.Columns.Add( "名次2",typeof(int));
Source.Table.Columns.Add( "名次3",typeof(int));
Source.Sort="课程1 ASC";
for(int i=0; i < Source.Count ; i++)
Source[i]["名次1"] = i+1;
Source.Sort="课程2 ASC";
for(int i=0; i < Source.Count ; i++)
Source[i]["名次2"] = i+1;
Source.Sort="课程3 ASC";
for(int i=0; i < Source.Count ; i++)
Source[i]["名次3"] = i+1;现在问题是 课程3 中有很多人的成绩为0,排序下来前几排都是0,如下
学生名称 课程1 课程2 课程3
ZZZ 2 66 3 100 1 0
XXX 3 79 2 76 2 0
YYY 1 58 1 93 3 0
怎么让 课程3 从不是0的开始排序,我如果用"SELECT 学生名称,课程1,课程2,课程3 FROM chengji where 课程3>0,这样这个学生的其它课程也不排序和显示了,所以不行,不知道应该怎么实现,请指导,谢谢(注:数据库ACCESS)
XXX 89 76 100
YYY 72 93 98
ZZZ 97 72 67现在点击课程1已经实现正反排序,如何在三门课程分数前面各加上一个排序号,会根据后面的分数排序变化。如:按照课程1降序排列后结果应该如下:学生名称 课程1 课程2 课程3
ZZZ 1 97 3 72 3 67
XXX 2 89 2 76 1 100
YYY 3 72 1 93 2 98
按照您的方法解决如下:
OleDbConnection conn=new OleDbConnection(connStr);
OleDbDataAdapter MyCommand = new OleDbDataAdapter("SELECT 学生名称,课程1,课程2,课程3 FROM chengji", conn);
DataSet ds = new DataSet();
MyCommand.Fill(ds, "chengji");
DataView Source = ds.Tables["chengji"].DefaultView;
Source.Table.Columns.Add( "名次1",typeof(int));
Source.Table.Columns.Add( "名次2",typeof(int));
Source.Table.Columns.Add( "名次3",typeof(int));
Source.Sort="课程1 ASC";
for(int i=0; i < Source.Count ; i++)
Source[i]["名次1"] = i+1;
Source.Sort="课程2 ASC";
for(int i=0; i < Source.Count ; i++)
Source[i]["名次2"] = i+1;
Source.Sort="课程3 ASC";
for(int i=0; i < Source.Count ; i++)
Source[i]["名次3"] = i+1;现在问题是 课程3 中有很多人的成绩为0,排序下来前几排都是0,如下
学生名称 课程1 课程2 课程3
ZZZ 2 66 3 100 1 0
XXX 3 79 2 76 2 0
YYY 1 58 1 93 3 0
怎么让 课程3 从不是0的开始排序,我如果用"SELECT 学生名称,课程1,课程2,课程3 FROM chengji where 课程3>0,这样这个学生的其它课程也不排序和显示了,所以不行,不知道应该怎么实现,请指导,谢谢(注:数据库ACCESS)
int j = 1;
for(int i=0; i < Source.Count ; i++)
{
if (int.Parse(Source[i]["课程3"].ToString()) == 0)
Source[i]["名次3"] = null;
else
{
Source[i]["名次3"] = j;
j++;
}
}或者把列 "名次3" 改成 string
Source[i]["名次3"] = "";
Source[i]["名次3"] = j.ToString();