datagrid是使用绑定源列表<student> </student>编辑单元格的排序

时间:2011-12-13 08:45:37

标签: c# winforms datagridview

当用户在事件dataGridViewStudents_CellValueChanged中编辑单元格值时。数据网格值相应地排序。

 private void form_Load(object sender, EventArgs e)  
        {
            List<student> lststudent=new List<student>(); 
             lststudent.add("1","Abc", 26);
             lststudent.add("1","xyz", 31);
             lststudent.add("1","pqr", 53);
             lststudent.add("1", "def", 23);
            DataGridView.DataSource= lststudent; 
        }
        private void datagridStudent_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            DataGridViewCell cell = null;
            if (e.RowIndex > -1 && e.ColumnIndex > -1)
            {
                cell = ((DataGridView)sender).Rows[e.RowIndex].Cells[e.ColumnIndex];

                ((DataGridView)sender).Rows[e.RowIndex].Cells[2].Value = 36; ((DataGridView)sender).Sort(((DataGridView)sender).Columns["marks"], ListSortDirection.Ascending);
            }
        }

在此代码中,当用户编辑datagrid中的单元格时。它不会根据该列对数据网格进行排序。 datagrid与list绑定。所以,我想在用户更改单元格值时对数据网格进行排序。

1 个答案:

答案 0 :(得分:1)

    private void datagridStudent_CellValueChanged(object sender, DataGridViewCellEventArgs e)
    {
        var t = ((List<Student>)DataGridView.DataSource).OrderBy(x=>x.Marks).ToList();
        //or var t =((List<Student>)DataGridView.DataSource).OrderByDescending(x=>x.Marks).ToList();
        DataGridView.DataSource = t;
    }