我在C#中编程。该程序是关于与之相关的学生的行。我有学生姓名列表,我将只使用一名学生iD并在数据网格视图中打印所有成绩。我无法做到这一点,它只是向我展示了所有学生成绩。我只需要专门打印一个学生的成绩。
private BindingList<StudentGrade> _studentGrade = new BindingList<StudentGrade>();
public frmGrades(int studentID)
{
InitializeComponent();
loadItemsFromFiles();
dgvGrades.DataSource = _studentGrade;
string id = studentID.ToString();
for (int z = 0; z < dgvGrades.Rows.Count;z++)
{
if (!dgvGrades.Rows[z].Cells["StudentID"].Value.ToString().Equals(id))
{
dgvGrades.Rows.RemoveAt(z);
z--;
dgvGrades.Refresh();
}
}
}
答案 0 :(得分:1)
在迭代时不允许修改集合;您可以做的是从绑定源中删除行并再次绑定它:即。,
// collecting rows that satisfies the condition
var query = _studentGrade.AsEnumerable().Where(row => row.Field<string>("StudentID") == id );
//deleting collected rows from the source
foreach(var row in query.ToList())
row.Delete();
// re assign the datasource
dgvGrades.DataSource = _studentGrade;
dgvGrades.Refresh();
答案 1 :(得分:1)
您无需从网格或列表中删除元素。在这种情况下,您可以使用过滤。您可以使用linq过滤输入列表,并将过滤结果设置为DataSource
的{{1}}:
DataGridView