Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не могу скрыть колонку DataGridView, скрытая колонка все равно видна 
:(
    Опции темы
5492442
Дата 6.5.2009, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 6.5.2009

Репутация: нет
Всего: нет



Есть:
- Visual Studio 2008 Pro
- MS SQL Server Express 2008

Порядок действий:

 1) В Visual Studio 2008 Pro сделан проект WindowsAppForm... 

 2) К проекту подцеплен датасет указывающий на 1 таблицу с СУБД (таблица - 2 колонки: не пустой первичный ключ "ID", текстовое поле "TXT")

3) На форму брошен TabContol с двумя вкладками.

4) Переходим на вторую (!) вкладку (tabPage2) бросаем на неё датагрид связанный с нашей примитивной табличкой.

5) Запускаем - на второй закладке любуемся на грид с двумя колонками (ID, TXT)

6) Заходим в настройки полей датагрида (в коллекцию или кто как может) - говорим что первая колонка (ID) - НЕ должна быть видима.
(ставим свойство колонки Visible в значение false, колонка исчезает с грида, т.е. у грида в "DesignTime" ОДНА колонка TXT)

7) Запускаем - и опять на второй закладке любуемся на грид с ДВУМЯ (!) колонками (ID, TXT).
Т.е. первая колонка проигнорировала наши настройки видимости.
Далее:

8) Вырезаем весь датагрид с второй вкладки и переносим его на первую вкладку TabConrtol-а.

9) Запускаем - ... Шайтан! первая колонка исчезла! Т.е. теперь датагрид готов скрыть колонку на основе свойства Visible =false.

10) Я переносил такой датагрид на ЛЮБЫЕ закладки после первой - скрыть колонку с первичным ключом не удалось. На первой - все ок, на прочих - фиг вам...
Другие поля (не первичные - успешно скрываются на любый вкладках)

Очень надеюсь на помощь ГУРУ в этом вопросе smile
Любые разумные идеи и объяснения этого феномена приветствуются.
Только просьба - сперва проверьте сами, а потом комментируйте.
PM MAIL   Вверх
-Mikle-
Дата 6.5.2009, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 17
Всего: 59



Цитата(5492442 @  7.5.2009,  00:12 Найти цитируемый пост)
Шайтан! первая колонка исчезла!

Действительно у тебя там наверное Шайтан!  smile 

Вот у меня нет. Проверял вот этим кодом:
Код

            DataTable table = new DataTable();
            DataColumn col = table.Columns.Add("ID", typeof(int));
            col.AutoIncrement = true;
            col.AllowDBNull = false;
            col.AutoIncrementSeed = 1;
            col.AutoIncrementStep = 1;
            
            table.Columns.Add("TXT", typeof(string));

            table.Rows.Add(null, "111");
            table.Rows.Add(null, "222");
            table.Rows.Add(null, "333");
            table.Rows.Add(null, "444");

            dataGridView1.DataSource = table;



--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
5492442
Дата 7.5.2009, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 6.5.2009

Репутация: нет
Всего: нет



Цитата(-Mikle- @ 6.5.2009,  21:31)

Действительно у тебя там наверное Шайтан!  smile 

Вот у меня нет. Проверял вот этим кодом:
... 

В принципе - скрытие колонки ДОЛЖНО быть. Так что у тебя все работает просто замечательно.
НО как я понял, приведенный тобой пример НЕ повторяет МОЮ последовательность действий.

Соглашусь, что ставить SQLсервер для одного эксперимента - затратно, но похоже дело именно в том, чтоDataGridView связан с реальной (не программно созданной "на лету") таблицей, причем там есть не пустая колонка - первичный ключ.

Вообще - задача отображения на нескольких вкладках данных с таблиц сервера - задача очень распространенная.
Использование при этом DataGridView - тоже.
Скрывать от конечного пользователя колонки с суррогатными первичными ключами - тоже совершенно логично.

Неужели никто еще не наступал на подобные грабли?
PM MAIL   Вверх
5492442
Дата 7.5.2009, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 6.5.2009

Репутация: нет
Всего: нет



Задача решена.

Решение тривиально:
Если настройки компоненты DataGridView, выполненные в DesignTime, не работают - надо делать все программно - в RunTime smile

Особенность:
Колонку надо программно прятать ПОСЛЕ вызова метода TableAdapter.Fill (метод загрузки данных с таблицы сервера в DataGridView)
Если прятать ДО - не помогает. 
Похоже по этому и не применяются настройки выполненные в DesignTime - они отменяются для колонки первичного ключа при вызове метода загрузки данных в DataGridView.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0654 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.