Как определить порядок отображаемых столбцов в сетке данных, привязанной к источнику данных - PullRequest
3 голосов
/ 12 января 2010

Есть ли способ определить порядок отображения столбцов в сетка данных при связывании его с источником данных, который содержит лежащий в основе 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; }
        }
}

Edit: Я хотел бы добавить, что я не хочу добавлять столбцы вручную в список столбцов в конструкторе. Я хотел бы сохранить это как можно более динамичным.

Ответы [ 4 ]

1 голос
/ 19 августа 2015

Я не уверен, является ли это функциональностью, предлагаемой .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;}
}
1 голос
/ 12 января 2010

В DataGridView укажите фактический список столбцов вместо того, чтобы разрешить автоматическое связывание данных. Это можно сделать в представлении «Дизайн» в Visual Studio, выбрав элемент управления и добавив столбцы. Убедитесь, что вы указываете в каждом столбце, к какому свойству он должен привязываться. Затем вы можете изменить порядок столбцов так, как вам нравится, а также выполнить другие настройки.

Я думаю, что атрибут DisplayOrder является относительно новым и, вероятно, не поддерживается в элементе управления DataGridView.

0 голосов
/ 01 октября 2013

Порядок столбцов не всегда работает. Вам нужно отключить AutoColumnCreate, чтобы исправить несоответствия:

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

0 голосов
/ 12 января 2010

Порядок отображения столбцов в DataGridView определяется свойствами DisplayIndex DataGridViewColumn -s. Вам необходимо установить эти свойства в столбцах сетки, чтобы изменить их порядок.

Я также согласен с ответом Эйлона: вы можете создать список столбцов самостоятельно, вместо автоматической привязки данных, и таким образом определить порядок, в котором они будут отображаться.

...