2010-05-18 82 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