powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / И опять DataGridView. Программная перестановка колонок.
21 сообщений из 21, страница 1 из 1
И опять DataGridView. Программная перестановка колонок.
    #36726052
Фотография Vakho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Visual Studio 2005, VisualBasic.Net
==========================
Можно ли ПРОГРАММНО поменять в DGV порядок следования колонок ?

Это может понадобиться, например, в случае, когда пользователь по своему усмотрению
переставил колонки. Эта информация сохраняется в некоторм файле, да хоть бы в XML-формте.
В следующий раз программа считывает это файл, переставляет колонки желаемым образом, и
пожалуйста, дорогой, пользуйся.

Спасибо.
...
Рейтинг: 0 / 0
И опять DataGridView. Программная перестановка колонок.
    #36726055
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да
...
Рейтинг: 0 / 0
И опять DataGridView. Программная перестановка колонок.
    #36726070
Фотография Vakho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pationда

Может быть чуть-чуть по-подробнее.
...
Рейтинг: 0 / 0
И опять DataGridView. Программная перестановка колонок.
    #36726071
Vakhopationда

Может быть чуть-чуть по-подробнее.

Да, можно поменять порядок следования колонок.
...
Рейтинг: 0 / 0
И опять DataGridView. Программная перестановка колонок.
    #36726102
А может быть ворона...
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитать про DataGridViewColumn.DisplayIndex
...
Рейтинг: 0 / 0
И опять DataGridView. Программная перестановка колонок.
    #36726116
Фотография Vakho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может быть ворона...Почитать про DataGridViewColumn.DisplayIndex

Это то, что надо.
...
Рейтинг: 0 / 0
И опять DataGridView. Программная перестановка колонок.
    #36726394
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
когда уже народ научится мсдн читать ....
...
Рейтинг: 0 / 0
И опять DataGridView. Программная перестановка колонок.
    #36726551
Halfling
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pation,

Может в самых популярных вопросах ссылку на мсдн оставить?
Может хоть часть да отсеется...
...
Рейтинг: 0 / 0
И опять DataGridView. Программная перестановка колонок.
    #36727208
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Halflingpation,

Может в самых популярных вопросах ссылку на мсдн оставить?
Может хоть часть да отсеется...
пробовали - обижаются.
...
Рейтинг: 0 / 0
И опять DataGridView. Программная перестановка колонок.
    #36728166
HiMik2004
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я конечно могу ошибаться, но...
Мне кажется, что вопрос не так прост. При установке свойства DisplayIndex у колонки может поменяться это свойство у других колонок. Поэтому интересно было бы указать алгоритм выставления упомянутого свойства колонкам.
Вот фрагмент кода который я использовал в наследнике от DataGridView - попинайте:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
                int w, di;

                DataView dw = new DataView(dt, String.Empty, "ColDisplayIndex ASC", DataViewRowState.CurrentRows);
                DataRowView dwrow;
                for (int i = 0; i < dw.Count; i++)
                {
                    dwrow = dw[i];
                    String colName = dwrow["ColName"].ToString();
                    if (this.Columns.Contains(colName))
                    {
                        DataGridViewColumn col = this.Columns[colName];
                        w = (int)dwrow["ColWidth"];
                        di = (int)dwrow["ColDisplayIndex"];
                        col.Width = w;
                        if (di < 0) col.Visible = false; else { col.Visible = true; col.DisplayIndex = di; }
                    }
                }
...
Рейтинг: 0 / 0
И опять DataGridView. Программная перестановка колонок.
    #36729588
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что такое dt?
...
Рейтинг: 0 / 0
И опять DataGridView. Программная перестановка колонок.
    #36729768
HiMik2004
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
winsky!,

dt - DataTable, как можно было догадаться из конструктора DataView.
Содержит колонки "ColName" (primary key) - уникальное имя колонки, "ColWidth" - ширина колонки, "ColDisplayIndex" - индекс при отображении.
(Извини, что пример не на VB.Net - соскочил с него давно :))
...
Рейтинг: 0 / 0
И опять DataGridView. Программная перестановка колонок.
    #36729867
TryCatch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
HiMik2004,
Мне интересно, вы это проверили?
автор
При установке свойства DisplayIndex у колонки может поменяться это свойство у других колонок.
...
Рейтинг: 0 / 0
И опять DataGridView. Программная перестановка колонок.
    #36730026
HiMik2004
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TryCatch,
Често говоря, это предположение.
Просто у меня наблюдались с этим глюки (порядок восстанавливался неправильно) и поэтому я не уверен, что тот код который я привёл будет всегда правильно срабатывать.
...
Рейтинг: 0 / 0
И опять DataGridView. Программная перестановка колонок.
    #36730243
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HiMik2004Мне кажется, что вопрос не так прост. При установке свойства DisplayIndex у колонки может поменяться это свойство у других колонок. Поэтому интересно было бы указать алгоритм выставления упомянутого свойства колонкам.Отсортировать по возрастанию DisplayIndex, потом присваивать.

Ниже код для WPF-ного грида. В WinForms концепция та же.

Самый лучший в мире код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
    class DataGridSettings
    {
        public DataGrid Grid { get; set; }        

        public DataGridState Value
        {
            get
            {
                int columnIndex = 0;
                return new DataGridState()
                {
                    Columns = Grid
                        .Columns
                        .Where(v => v.DisplayIndex >= 0)
                        .Select(v =>
                        {
                            var result = new DataGridColumnState()
                            {
                                Index = columnIndex,
                                DisplayIndex = v.DisplayIndex,
                                Visibility = v.Visibility,
                                Width = v.ActualWidth
                            };
                            columnIndex++;
                            return result;
                        })
                        .ToArray()
                };
            }
            set
            {
                if (value == null || value.Columns.Length != Grid.Columns.Count)
                    return;

                foreach (var columnState in value.Columns.OrderBy(v => v.DisplayIndex))
                {
                    var column = Grid.Columns[columnState.Index];

                    if (columnState.DisplayIndex >= 0)
                        column.DisplayIndex = columnState.DisplayIndex;

                    column.Visibility = columnState.Visibility;
                    column.Width = columnState.Width;
                }
            }
        }
    }

    public class DataGridState
    {
        public DataGridColumnState[] Columns { get; set; }
    }

    public class DataGridColumnState
    {
        public int Index { get; set; }
        public int DisplayIndex { get; set; }
        public Visibility Visibility { get; set; }
        public double Width { get; set; }
    }
...
Рейтинг: 0 / 0
И опять DataGridView. Программная перестановка колонок.
    #36730725
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HiMik2004winsky!,

dt - DataTable, как можно было догадаться из конструктора DataView.
Содержит колонки "ColName" (primary key) - уникальное имя колонки, "ColWidth" - ширина колонки, "ColDisplayIndex" - индекс при отображении.
(Извини, что пример не на VB.Net - соскочил с него давно :))

гм. а при чем здесь вб?
...
Рейтинг: 0 / 0
И опять DataGridView. Программная перестановка колонок.
    #36730735
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HiMik2004winsky!,

dt - DataTable, как можно было догадаться из конструктора DataView.
Содержит колонки "ColName" (primary key) - уникальное имя колонки, "ColWidth" - ширина колонки, "ColDisplayIndex" - индекс при отображении.

и на кой весь этот гемор? в смысле зачем это все в DataTable пихать?
...
Рейтинг: 0 / 0
И опять DataGridView. Программная перестановка колонок.
    #36730838
HiMik2004
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>гм. а при чем здесь вб?
наверху написано: Visual Studio 2005, VisualBasic.Net :)

> и на кой весь этот гемор? в смысле зачем это все в DataTable пихать?
DataTable можно легко сериализовать например в XML
а то и просто в сеттинги запихнуть. Но я не настаиваю, кому как удобнее.
...
Рейтинг: 0 / 0
И опять DataGridView. Программная перестановка колонок.
    #36730908
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HiMik2004>гм. а при чем здесь вб?
наверху написано: Visual Studio 2005, VisualBasic.Net :)

наверху - это на потолке?

WinForms, .Net Framework
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
И опять DataGridView. Программная перестановка колонок.
    #38359088
Greekk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pation,
Заколебали, умники!
Народ специально ходит на такие форумы чтобы в сжатом виде получить адекватную информацию, а не листать портянки мсдн-а. Освежите знания сами, подскажите людям!
...
Рейтинг: 0 / 0
И опять DataGridView. Программная перестановка колонок.
    #38359369
фиганыч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Greekk,

Такие как ты регистрируются на таких форумах на один день, чтобы написать чушь в теме трёхлетней давности и благополучно уйти и не приходить больше никогда.
А по теме - в MSDN всё есть, и есть даже обзоры (на русском - для нынешних студентов), которые покрывают все стандартные вопросы - и людям здесь остаётся спрашивать лишь нюансы взаимодействия, ошибки и прочее, что не так очевидно.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / И опять DataGridView. Программная перестановка колонок.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]