我正在尝试将数据表排序为数据集。 在这个数据集中,我有两个关系
的表表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";
}
*/
}
答案 0 :(得分:0)
您可以通过调用表的Select方法直接过滤和排序数据表的内容。此策略允许您仅在运行时进行筛选和排序。如果要在设计时设置过滤和排序条件,特别是如果要将控件绑定到过滤或排序结果,请使用数据视图。有关更多信息,请参阅使用数据视图过滤和排序数据。