如何重新排序DataGridView中的列?

Lui*_*cio 16 c# datagridview winforms

所以我用我的DGV填充了一些数据,并将一些列设置为不可见:

        var part = inventory.espiromex_product.Where(p => p.descriptionsmall == cmbMainP.Text).First().partnumberp;
        dtgAssy.DataSource = inventory.espiromex_productsub.Where(p => p.partnumberp == part);
        dtgAssy.Columns["idproductsub"].Visible = false;
        dtgAssy.Columns["partnumberp"].Visible = false;
        dtgAssy.Columns["partnumbersubp"].Visible = true;
        dtgAssy.Columns["quantity"].Visible = true;
        dtgAssy.Columns["comments"].Visible = true;
        dtgAssy.Columns["assemblyno"].Visible = false;
        dtgAssy.Columns["assemblynodesc"].Visible = false;
        dtgAssy.Columns["uomid"].Visible = true;
        dtgAssy.Columns["subassemblylevelnumber"].Visible = false;
        dtgAssy.Columns["scrappercent"].Visible = true;
Run Code Online (Sandbox Code Playgroud)

这很好,但列按字母顺序排序,如何以编程方式重新排序列?

请注意,库存是一个Entitie,我正在使用Linq to Entities.

Aus*_*nen 26

您可以设置各列的DisplayIndex属性.


cdk*_*ose 5

另一个建议:不要让datagridview为你做决定.不要让dgv在绑定时自动为您生成列,而是编写代码以按照您想要的顺序和所需的属性创建列,然后绑定数据源.依赖于dgv来完成工作可能会在新版本出现或您对数据源进行细微更改时产生不可预测的结果.

  • 我更喜欢确定性方法.如果您想要特定的行为,请为其编写代码.不要依赖半可预测但不保证的行为. (2认同)