DataGrid контролата визуализира таблични данни. Тя осигурява навигация по редове и колони и позволява редактиране на данните. Като източник на данни най-често се използват ADO.NET DataSet и DataTable. Чрез свойството DataSource се задава източника на данни, а чрез свойството DataMember – пътя до данните в рамките на източника. По-важни свойства на контролата са:
-
ReadOnly – разрешава / забранява редакцията на данни.
-
CaptionVisible – показва / скрива заглавието.
-
ColumnHeadersVisible – показва / скрива заглавията на колоните.
-
RowHeadersVisible – показва / скрива колоната в ляво от редовете.
-
TableStyles – задава стилове за таблицата.
-
MappingName – задава таблицата, за която се отнася дефинираният стил.
-
GridColumnStyles – задава форматиране на отделните колони – заглавие, ширина и др.
Работа с DataGrid контролата – пример
С настоящия пример ще илюстрираме работата с DataGrid контролата в Windows Forms и сложното свързване (complex data binding) на таблица от DataSet с DataGrid.
Ето стъпките за изграждане на нашето приложение:
-
Стартираме VS.NET и създаваме нов Windows Forms проект.
-
Задаваме на главната форма име MainForm и заглавие "DataGrid Demo". Променяме и името на файла от Form1.cs на MainForm.cs.
-
Поставяме във формата една DataGrid контрола. За име на контролата задаваме DataGridTowns.
-
Добавяме код, който при зареждане на формата (при събитие Load) създава DataSet, който съдържа таблица Towns с две колони – id и име на град. След като той e създаден, свързваме DataGrid контролата с таблицата Towns от този DataSet:
private void MainForm_Load(object sender, System.EventArgs e)
{
// Create table "Towns"
DataTable towns = new DataTable("Towns");
towns.Columns.Add(new DataColumn("id", typeof(int)));
towns.Columns.Add(new DataColumn("name", typeof(string)));
// Add some rows in the table
DataRow row = towns.NewRow();
row["id"] = 1;
row["name"] = "София";
towns.Rows.Add(row);
row = towns.NewRow();
row["id"] = 2;
row["name"] = "Пловдив";
towns.Rows.Add(row);
row = towns.NewRow();
row["id"] = 3;
row["name"] = "Варна";
towns.Rows.Add(row);
row = towns.NewRow();
row["id"] = 4;
row["name"] = "Русе";
towns.Rows.Add(row);
// Add table "Towns" to the DataSet
DataSet ds = new DataSet();
ds.Tables.Add(towns);
// Bind the DataGrid to the DataSet
DataGridTowns.DataSource = ds;
DataGridTowns.DataMember = "Towns";
}
| -
Приложението е готово и можем да го стартираме и тестваме.
Ако променим данните, визуализирани в DataGrid контролата, те ще се променят и в таблицата Towns от DataSet обекта.
TableStyles и дефиниране на стилове – пример
Настоящият пример илюстрира работата с DataGrid контролата в Windows Forms и възможностите за дефиниране на стилове за визуализацията на данните чрез колекцията TableStyles. Ще създадем просто приложение, подобно на това от предходния пример, но чрез колекцията TableStyles ще определим как да бъдат визуализирани колоните на таблицата.
Ето и стъпките за изграждане на нашето приложение:
-
Началните стъпки за изграждане на приложението са същите като стъпки от 1 до 4 в предишния пример. Изпълняваме ги и преминаваме към дефинирането на стиловете за визуализация на данните.
-
Щракваме с десния бутон на мишката върху поставения в главната форма DataGrid и избираме Properties. В прозореца Properties на редактора намираме свойството TableStyles и щракваме върху бутона с многоточието, намиращ се в полето в дясно от него. Отваря се прозорец, който ни позволява да добавяме стилове за таблицата. Щракваме върху бутона Add, за да добавим нов стил. В дясната половина на прозореца можем да променяме свойствата на добавения стил. Намираме свойството Name и му задаваме стойност DataGridTableStyleTowns.
-
На свойството MappingName задаваме стойност Towns. С това указваме, че този стил се отнася за таблицата Towns. Задаваме на свойството AlternatingBackColor (указващо цвят, в който ще се оцветяват четните редове) стойност Info. Остана да зададем стилове за отделните колони.
-
Щракваме върху бутона с многоточието, намиращ се в полето в дясно от свойството GridColumnStyles. Отваря се прозорец, който ни позволява да добавяме стилове за отделните колони. Щракваме върху бутона Add, за да добавим нов DataGridTextBoxColumn в колекцията. Задаваме стойност DataGridTextBoxColumnName на свойството Name.
-
Задаваме на свойството MappingName стойност name. Така указваме, че този стил се отнася за полето name. Задаваме на свойствата Alignment, HeaderText и NullText съответно стойности Center, "име на град" и "(няма данни)". Така заглавието на колоната ще е "име на град", текстът ще е центриран, а когато няма стойност в полето, в таблицата ще се визуализира "(няма данни)". Накрая указваме ширина на колоната, като на свойството width зададем стойност 200.
-
Натискаме бутона [OK], за да запазим промените в колекцията със стиловете за колоните. След това натискаме бутона [OK] и в другия прозорец, за да запазим промените в стиловете за таблиците.
-
Приложението е готово и можем да го стартираме и тестваме.
Забелязваме, че макар в таблицата Towns да има две колони, в нашия DataGrid се визуализира само едната. Това е така, защото се визуализират само полетата, за които са добавени стилове в колекцията GridColumnStyles. Това означава, че ако не искаме дадено поле да бъде визуализирано, просто не указваме стил за него.
Ще отбележим, че когато добавяме стил в колекцията GridColumnStyles, освен DataGridTextBoxColumn, можем да добавяме и DataGridBoolColumn. Това става като щракнем върху стрелката, намираща се в дясната част на бутона Add и от падащия списък изберем DataGridBoolColumn. Чрез DataGridBoolColumn определяме колона, която във всяка клетка, съдържа поле с отметка, представящо булева стойност.
Сподели с приятели: |