繁体   English   中英

如何确定绑定到数据源的datagridview中显示列的顺序

[英]Howto determine order of displayed columns in a datagridview binded to a datasource

有什么方法可以确定datagridview中显示的列的顺序,当它绑定到包含基础IList的数据源时? 我认为有一个特定的属性属性用于此目的但不记得它实际上是什么。

例如:

 public void BindToGrid(IList<CustomClass> list)
        {
            _bindingSource.DataSource = list;
            dataGridView1.DataSource = _bindingSource.DataSource;
        }

binded类型应该是这样的

class CustomClass
{
        bool _selected = false;
        //[DisplayOrder(0)]
        public bool Selected
        {
            get { return _selected; }
            set { _selected = value; }
        }

        string _name;
         //[DisplayOrder(2)]
        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }

        string _value;
         //[DisplayOrder(1)]
        public string Value
        {
            get { return _value; }
            set { _value = value; }
        }
}

编辑:我想补充一点,我不想手动将列添加到设计器中的列列表中。 我想尽可能保持这种动态。

DataGridView指定实际的列列表,而不是允许它自动数据绑定。 您可以通过选择控件并添加列,在Visual Studio的“设计视图”中执行此操作。 确保在每列中指定它应绑定到哪个属性。 然后,您可以按照您想要的方式重新排列列以及进行其他自定义。

我认为DisplayOrder属性相对较新,可能在DataGridView控件中不受支持。

我不确定这是否是.Net提供的功能,但如果您只是更改类中属性的顺序,则网格以相同的顺序呈现列。

以下两个类将按照它们在类中键入的顺序呈现。 奇怪!!

class CustomClass
{
    public bool Selected {get;set;}
    public string Name{get;set;}
}

class CustomClass
{
    public string Name{get;set;}       
    public bool Selected {get;set;}
}

列排序并不总是有效。 您需要关闭AutoColumnCreate来修复不一致性:

http://www.internetworkconsulting.net/content/datadridview-displayorder-not-working

DataGridView列的显示顺序由DataGridViewColumn -s的DisplayIndex属性确定。 您必须在网格的列上设置这些属性,以便更改其顺序。

我也同意Eilon的回答:你可以自己创建列的列表,而不是自动数据绑定,这样你就可以确定它们的显示顺序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM