Форум программистов «Весельчак У»
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
Начало
Наши сайты
Галерея
Весельчак У
Наша Вики
Хранилище
Проекты
Правила
Правила форума
Правила русского языка
Помощь
Поиск
Календарь
Почта
Войти
Регистрация
Форум программистов «Весельчак У»
>
Программирование
>
.NET технология от и до
> Тема:
DataGrid
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: DataGrid (Прочитано 13399 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
Serega
Гость
DataGrid
«
:
09-09-2004 09:12 »
Есть табличка в памяти, нужно отобразить в DataGrid только нужные столбцы этой таблички
Записан
DM
Гость
DataGrid
«
Ответ #1 :
09-09-2004 10:02 »
Для этого надо завести таблицу стилей.
Вот пример кода (на форме уже есть DataGrid с именем DG) :
//-------------------------------------------------------------------------
DataTable DT; // Наша табличка с данными
DataColumn DC;
DataRow DR;
DT = new DataTable("MyTable");
// Описание колонок MyTable
// 1-я колонка
DC = new DataColumn();
DC.DataType = System.Type.GetType("System.String");
DC.ColumnName = "Column1";
DC.AutoIncrement = false;
DC.Caption = "Колонка1";
DC.ReadOnly = true;
DC.Unique = false;
DC.MaxLength = 30;
DC.DefaultValue = "";
DC.AllowDBNull = false;
DT.Columns.Add(DC);
// 2-я колонка
DC = new DataColumn();
DC.DataType = System.Type.GetType("System.String");
DC.ColumnName = "Column2";
DC.AutoIncrement = false;
DC.Caption = "Колонка2";
DC.ReadOnly = true;
DC.Unique = false;
DC.MaxLength = 90;
DC.DefaultValue = "";
DC.AllowDBNull = false;
DT.Columns.Add(DC);
// 3-я колонка
DC = new DataColumn();
DC.DataType = System.Type.GetType("System.String");
DC.ColumnName = "Column3";
DC.AutoIncrement = false;
DC.Caption = "Колонка3";
DC.ReadOnly = true;
DC.Unique = false;
DC.MaxLength = 90;
DC.DefaultValue = "";
DC.AllowDBNull = false;
DT.Columns.Add(DC);
// Заполняем таблицу данными - 2 строчки
DR = DT.NewRow();
DR["Column1"] = "1";
DR["Column2"] = "Строка 1";
DR["Column3"] = "sasaasasasa";
DT.Rows.Add(DR);
DR = DT.NewRow();
DR["Column1"] = "2";
DR["Column2"] = "Строка 2";
DR["Column3"] = "ddadadadadada";
DT.Rows.Add(DR);
DT.DefaultView.AllowNew = false; // Это требуется, если надо запретить редактирование
DT.DefaultView.AllowDelete = false;
DG.DataSource = DT.DefaultView;
/*
// Описание СТИЛЯ колонок - то, что собственно будет показываться на экране
DataGridTableStyle TStyle;
DataGridTextBoxColumn TextCol;
TStyle = new DataGridTableStyle();
TStyle.MappingName = "MyTable"; // Стиль для таблицы MyTable
// 1-я колонка
TextCol = new DataGridTextBoxColumn();
TextCol.MappingName = "Column1";
TextCol.HeaderText = "Колонка1";
TextCol.ReadOnly = true;
TextCol.Width = 90;
TextCol.NullText = "";
TextCol.Alignment = HorizontalAlignment.Center;
TStyle.GridColumnStyles.Add(TextCol);
// 2-я колонка
TextCol = new DataGridTextBoxColumn();
TextCol.MappingName = "Column2";
TextCol.HeaderText = "Колонка2";
TextCol.ReadOnly = true;
TextCol.Width = 150;
TextCol.NullText = "";
TextCol.Alignment = HorizontalAlignment.Center;
TStyle.GridColumnStyles.Add(TextCol);
// А 3-ю колонку показывать не будем - в таблицу стилей ничего не добавляем
// присобачиваем сформированную таблицу стилей к гриду
DG.TableStyles.Clear();
DG.TableStyles.Add(TStyle);
DG.CaptionText="Табличка моя";
*/
//-----------------------------------------------------------------------
Если раскомментарить то, что находится между /* */ , то на экране
будет показываться вместо 3-х колонок только 2.
Записан
DM
Гость
DataGrid
«
Ответ #2 :
09-09-2004 10:25 »
Прошу прощения за излишне длинный код - он у меня сохранился со времени исследования грида. Я его и отправил почти как есть так как времени мало.
Записан
Serega
Гость
DataGrid
«
Ответ #3 :
09-09-2004 12:04 »
У меня тоже есть такой код, но сейчас он почему-то не хочет работать
В стиле только нужные мне столбцы, а грид все равно отображает все
Записан
DM
Гость
DataGrid
«
Ответ #4 :
09-09-2004 13:03 »
Тогда, наверное, надо искать какую-то мелочь, типа TStyle.MappingName.
Или, может, стилей несколько. Кстати, заголовки колонок высвечиваются из TableStyles или из DataTable? Если из DataTable, то стиль вообще не цепляется...
Записан
Serega
Гость
DataGrid
«
Ответ #5 :
09-09-2004 13:37 »
Стиль действительно не цепляется
Пробовал сам создавать стить и использовать тот, что сгенерил визард
На что влияет MappingName стиля ? и какой долен быть, имя таблицы или что ?
Записан
Anonymous
Гость
DataGrid
«
Ответ #6 :
09-09-2004 14:16 »
У меня стиль работает, когда MappingName совпадает с именем таблицы, указываемым в конструкторе:
DT = new DataTable("MyTable1");
TStyle.MappingName = "MyTable1";
Записан
DM
Гость
DataGrid
«
Ответ #7 :
09-09-2004 14:21 »
Гость это я, забыл зарегистрироваться
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Форум программистов «Весельчак У»
>
Программирование
>
.NET технология от и до
> Тема:
DataGrid
Загружается...