Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: DataGrid  (Прочитано 8201 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Serega
Гость
« : 09-09-2004 09:12 » 

Есть табличка в памяти, нужно отобразить в DataGrid только нужные столбцы этой таблички
Записан
DM
Гость
« Ответ #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
Гость
« Ответ #2 : 09-09-2004 10:25 » 

Прошу прощения за излишне длинный код - он у меня сохранился со времени исследования грида. Я его и отправил почти как есть так как времени мало.
Записан
Serega
Гость
« Ответ #3 : 09-09-2004 12:04 » 

У меня тоже есть такой код, но сейчас он почему-то не хочет работать
В стиле только нужные мне столбцы, а грид все равно отображает все
Записан
DM
Гость
« Ответ #4 : 09-09-2004 13:03 » 

Тогда, наверное, надо искать какую-то мелочь, типа TStyle.MappingName.
Или, может, стилей несколько. Кстати, заголовки колонок высвечиваются из TableStyles или из DataTable? Если из DataTable, то стиль вообще не цепляется...
Записан
Serega
Гость
« Ответ #5 : 09-09-2004 13:37 » 

Стиль действительно не цепляется

Пробовал сам создавать стить и использовать тот, что сгенерил визард

На что влияет MappingName стиля ? и какой долен быть, имя таблицы или что ?
Записан
Anonymous
Гость
« Ответ #6 : 09-09-2004 14:16 » 

У меня стиль работает, когда MappingName совпадает с именем таблицы, указываемым в конструкторе:
DT = new DataTable("MyTable1");
TStyle.MappingName = "MyTable1";
Записан
DM
Гость
« Ответ #7 : 09-09-2004 14:21 » 

Улыбаюсь  Гость это я, забыл зарегистрироваться  Здесь была моя ладья...
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines