如何在DataGridView中重新排序列?

17

我用一些数据填充了我的DataGridView,并设置了一些列不可见:

        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;

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

请注意,inventory是一个实体,我正在使用Linq to Entities。

2个回答

28

7

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


只要查询不依赖于SELECT *,那么列的顺序将非常一致,并且不会受到足以不破坏您的查询的微小更改的影响。 - Wayne
2
我更喜欢确定性的方法。如果你想要特定的行为,就编写相应的代码。不要依赖于半可预测但不保证的行为。 - cdkMoose

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接