简体   繁体   English

如何使用C#在Winforms中编辑coulmn值时对DataGridView进行排序

[英]how to sort a DataGridView on edit the coulmn value in winforms using c#

I want to sort the datagridview. 我想对datagridview进行排序。 when user did some changes into datagrid from this event CellValueChanged. 当用户从此事件CellValueChanged对datagrid进行了一些更改时。 after the CellValueChanged completes the datagridview should be sort according to that column. 在CellValueChanged完成后,应根据该列对datagridview进行排序。 i have bind datagrid with list. 我已将datagrid与列表绑定。

You can use ColumnIndex property from DataGridViewCellEventArgs to sort 您可以使用DataGridViewCellEventArgs中的 ColumnIndex属性进行排序

    public Form1()
    {
        InitializeComponent();

        dataGridView1.CellValueChanged +=new DataGridViewCellEventHandler(dataGridView1_CellValueChanged);

        DataTable dt = new DataTable();
        dt.Columns.Add(new DataColumn("col1"));
        dt.Columns.Add(new DataColumn("col2"));
        dt.Columns.Add(new DataColumn("col3"));

        var r1 = dt.NewRow();
        r1["col1"] = "a1";
        r1["col2"] = "b1";
        r1["col3"] = "c1";

        var r2 = dt.NewRow();
        r2["col1"] = "a2";
        r2["col2"] = "b2";
        r2["col3"] = "c2";

        var r3 = dt.NewRow();
        r3["col1"] = "a3";
        r3["col2"] = "b3";
        r3["col3"] = "c3";

        dt.Rows.Add(r1);
        dt.Rows.Add(r2);
        dt.Rows.Add(r3);

        BindingSource bs = new BindingSource();
        bs.DataSource = dt;

        dataGridView1.DataSource = bs;

    }

    private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
    {
        var dataGrid = (DataGridView)sender;
        var dataGridColumn = dataGrid.Columns[e.ColumnIndex];
        dataGrid.Sort(dataGridColumn, ListSortDirection.Ascending);
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM