如何在数据集架构中对数据表进行排序

时间:2016-03-19 01:32:01

标签: c# .net datatable dataset

我正在尝试将数据表排序为数据集。 在这个数据集中,我有两个关系

的表
  

表1 - Aluno(学生)
  表2 - Curso(课程)

表aluno有一个主键'CPF'。但是我想按NAME(NOME)排序,但是排序子对NOME的父表ALUNO不起作用。

结果仍未排序。我不想使用数据视图,因为我必须通过NAME表学生订购,这个表是一个数据集模式。

这是我的代码段:

        if (dtGrdAlunos.HitTest(new Point(e.X, e.Y)).Row == -1 && dtGrdAlunos.DataSource != null)
        {

            if (sSortType == string.Empty && sColumnToSort == string.Empty)
                sSortType = " ASC";
            else if (sColumnToSort == dtTblAluno.Columns[dtGrdAlunos.HitTest(new Point(e.X, e.Y)).Column].ColumnName.ToString())
                sSortType = (sSortType == " DESC" ? " ASC" : " DESC");
            else if (sColumnToSort != dtTblAluno.Columns[dtGrdAlunos.HitTest(new Point(e.X, e.Y)).Column].ColumnName.ToString())
                sSortType = " ASC";

            sColumnToSort = dtTblAluno.Columns[dtGrdAlunos.HitTest(new Point(e.X, e.Y)).Column].ColumnName.ToString();
            rcTxtLeiaute.Text = sColumnToSort + " " + sSortType;

            dtGrdAlunos.DataSource = null;

            dsDataSet.Tables["Aluno"].DefaultView.Sort = sColumnToSort + sSortType;
            dsDataSet.Tables["Aluno"].AcceptChanges();
            dsDataSet.AcceptChanges();

            dtGrdAlunos.DataSource = dsDataSet.Tables["Aluno"];

            /*
            Application.DoEvents();
            for (int j = 0; j < dsDataSet.Tables["Aluno"].Rows.Count; j++)
            {
                rcTxtLeiaute.Text += j.ToString() + " - " + dsDataSet.Tables["Aluno"].Rows[j]["NOME"].ToString() + "\r";
            }
            */
        }

1 个答案:

答案 0 :(得分:0)

您可以通过调用表的Select方法直接过滤和排序数据表的内容。此策略允许您仅在运行时进行筛选和排序。如果要在设计时设置过滤和排序条件,特别是如果要将控件绑定到过滤或排序结果,请使用数据视图。有关更多信息,请参阅使用数据视图过滤和排序数据。

For more details on this click here