Лекція 3. Відображення сітки даних

 

DataGridView

 

DataGridView дуже потужний компонент, ідеально підходить для відображення баз даних, а так само маси іншої користувацької інформації.

Почнемо, перше про що хотілося б сказати, це є два шляхи заповнення даними даного компонента, це можна зробити в самому дизайнера або програмно, тобто вставити потрібне число колонок і провести різні маніпуляції з ними, налаштування вигляду, режим тільки читання, заголовки колонок і тд.

Два шляхи як створити стовпець в DataGridView, перший і найпростіший

// Grid це екземпляр DataGridView, створений або в дизайнері або в ручну десь у вашому коді

 

Grid.Columns.Add("firstcolumn","firstcolumn");

 

Перший параметр у Add це назву стовпця і текст який буде відображатися в заголовку стовпця.

Тут ми спочатку створюємо екземпляр DataGridView Column, це власне і буде наш стовпець, потім нам потрібно створити екземпляр DataGridViewCell і вказати якийсь тип клітинки. Далі вказуємо назву стовпця, напис в заголовку і шаблон клітинок. Обов'язковою тут є тільки вказання шаблону клітинок, тому що без нього при спробі додати колноку ви отримаєте Exception.

Другий спосіб складніший, але має свої плюси на зразок, того що можна задавати тип сортування стовпця, його доступність і масу корисних налаштувань про які я на пишу надалі.

Після того як ми створили потрібну кількість стовпців їх потрібно заповнити рядками, як це можна зробити тут умовно кажучи теж два шляхи. Якщо нам потрібно додати порожній рядок ми можемо викликати метод Grid.Rows.Add () якщо потрібно додати діапазон рядків то можна зробити так Grid.Rows.Add (10), на місце 10-ти підставте потрібне натуральне число. Корисно буває, якщо даних багато, з початку створити потрібну кількість рядків, а потім в них виводити значення, це буде значно швидше ніж виводити значення в них під час додавання.

Тепер давайте додамо вже не порожні рядки а рядки з даними. Знову ж перед нами два шляхи.

Перший з них ми додаємо масив об'єктів, наприклад рядків. Виглядати буде так:

Grid.Rows.Add(new object[] {"first","second"});

Другий спосіб

DataGridViewRow row = new DataGridViewRow();

 row.HeaderCell.Value = "Row";

 row.CreateCells(Grid);

 row.SetValues(new object[] { "djaga-djaga", "djuno-djuno" });

 Grid.Rows.Add(row);

Знову таки бачимо що другий спосіб більш заморочений але дає більше можливостей. Спочатку ми створюємо екземпляр рядка, потім задаємо заголовок, для цього рядка (буде відображатися як сама ліва колонка, можна там зробити нумерацію на приклад). Методу CreateCell передаємо наш DataGridView щоб він почистив вміст комірок і можна було встановити свої значення, зауважу можна не використовувати метод SetValues а відразу ж в методі CreateCells встановити значення клітинок, передавши ці значення другим параметром, в моєму випадку це виглядало б так row.CreateCells (Grid, new object [] {"djaga-djaga", "djuno-djuno"});

Який з цих способів підходить вашій задачі, вирішувати Вам.

Ну і фінальний етап це прочитати, дані з DataGridView. У цьому прикладі ми читаємо дані в рядок data іншого стовпця кожної клітинки, Зауважте що Grid.Row.Count-1 тому що як тільки заповнюється хоча б одне поле останнього рядку, створюється ще одне, не забувайте перевіряти, значення на null, інакше отримаєте Exception в разі якщо клітинка не буде ініціалізірованна.

string data;

 for (int i = 0; i < Grid.Rows.Count-1; i++)

 {

 data = Grid.Rows[i].Cells[1].Value.ToString();

 

 }

Ще один спосіб отримання даних з DataGridView за допомогою DataGridViewRow

foreach(DataGridViewRow trow in Grid.Rows)

 {

 if (trow.IsNewRow)

 continue;

 for (int i = 0; i < trow.Cells.Count; i++)

 {

 if (trow.Cells[i].Value != null)

 data = trow.Cells[i].Value.ToString();

 

 }

 

 }