2010-05-18 75 views
14

所以我填补我DGV了一些数据,并设置一些列无形:如何重新排列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; 

这只是罚款,但列按字母顺序排序,我怎么可以重新排序列编程?

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

回答

5

另一个建议:不要让datagridview为你做决定。不要让dgv在绑定时自动为您生成列,请编写代码以按所需顺序创建列,并使用所需属性创建列,然后绑定数据源。依靠dgv来完成这项工作可能会在新版本出来或者对数据源进行细微更改时产生不可预知的结果。

+0

只要查询不依赖于'SELECT *',那么列的顺序就会非常一致,并且不会受到细微变化而不会影响查询的影响。 – Wayne 2016-09-06 17:40:09

+2

我更喜欢确定性的方法。如果你想要一个特定的行为,为它编码。不要依赖半预测但不能保证的行为。 – cdkMoose 2016-09-06 17:51:30