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

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

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

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

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

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

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

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

Может в самых популярных вопросах ссылку на мсдн оставить?
Может хоть часть да отсеется...
пробовали - обижаются.
...
Рейтинг: 0 / 0
07.07.2010, 15:14
    #36728166
HiMik2004
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И опять DataGridView. Программная перестановка колонок.
Я конечно могу ошибаться, но...
Мне кажется, что вопрос не так прост. При установке свойства 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
08.07.2010, 10:17
    #36729588
winsky!
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И опять DataGridView. Программная перестановка колонок.
что такое dt?
...
Рейтинг: 0 / 0
08.07.2010, 11:16
    #36729768
HiMik2004
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И опять DataGridView. Программная перестановка колонок.
winsky!,

dt - DataTable, как можно было догадаться из конструктора DataView.
Содержит колонки "ColName" (primary key) - уникальное имя колонки, "ColWidth" - ширина колонки, "ColDisplayIndex" - индекс при отображении.
(Извини, что пример не на VB.Net - соскочил с него давно :))
...
Рейтинг: 0 / 0
08.07.2010, 11:41
    #36729867
TryCatch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И опять DataGridView. Программная перестановка колонок.
HiMik2004,
Мне интересно, вы это проверили?
автор
При установке свойства DisplayIndex у колонки может поменяться это свойство у других колонок.
...
Рейтинг: 0 / 0
08.07.2010, 12:19
    #36730026
HiMik2004
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И опять DataGridView. Программная перестановка колонок.
TryCatch,
Често говоря, это предположение.
Просто у меня наблюдались с этим глюки (порядок восстанавливался неправильно) и поэтому я не уверен, что тот код который я привёл будет всегда правильно срабатывать.
...
Рейтинг: 0 / 0
08.07.2010, 13:27
    #36730243
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И опять DataGridView. Программная перестановка колонок.
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
08.07.2010, 16:12
    #36730725
winsky!
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И опять DataGridView. Программная перестановка колонок.
HiMik2004winsky!,

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

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

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

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

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

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

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

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


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