所以我用我的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;
这很好,但列按字母顺序排序,如何以编程方式重新排序列?
请注意,库存是Entitie,我使用的是Linq to Entities。
答案 0 :(得分:25)
您可以设置各列的DisplayIndex property。
答案 1 :(得分:5)
另一个建议:不要让datagridview为你做决定。不要让dgv在绑定时自动为您生成列,而是编写代码以按照您想要的顺序和所需的属性创建列,然后绑定数据源。依赖于dgv来完成工作可能会在新版本出现或您对数据源进行细微更改时产生不可预测的结果。