Кратко съдържание



страница18/33
Дата23.07.2016
Размер10.53 Mb.
#1889
1   ...   14   15   16   17   18   19   20   21   ...   33

Контролата DataGrid


DataGrid контролата визуализира таблични данни. Тя осигурява нави­га­ция по редове и колони и позволява редактиране на данните. Като източ­ник на данни най-често се използват ADO.NET DataSet и DataTable. Чрез свой­ството DataSource се задава източникът на данни, а чрез свойството DataMember – пътят до данните в рамките на източника. По-важни свойства на контролата са:

  • ReadOnly – разрешава / забранява редакцията на данни.

  • CaptionVisible – показва / скрива заглавието.

  • ColumnHeadersVisible – показва / скрива заглавията на колоните.

  • RowHeadersVisible – показва / скрива колоната в ляво от редовете.

  • TableStyles – задава стилове за таблицата.

    • MappingName – задава таблицата, за която се отнася дефини­ра­ният стил.

    • GridColumnStyles – задава форматиране на отделните колони – заглавие, ширина и др.

Противно на очакванията контролата DataGrid няма събитие "смяна на текущия избран ред". Ако ви се налага да извършвате някакво действие при смяна на текущия избран ред (например да запишете промените по текущия ред в базата данни), можете да прихванете събитието CurrentCellChanged, което се активира при промяна на текущата клетка. Ако запомните в член-променлива в класа на формата коя е била предишната текуща клетка, ще можете да проверите дали текущият ред е бил променен. Текущата клетка е достъпна от свойството CurrentCell.

Препоръчителен начин за използване на DataGrid контролата е в режим ReadOnly=true. В този случай не се разрешават директни промени, а това спестява много проблеми. Ако е необходимо редактиране на редове или добавяне на нови, това може да се направи с отделен диалогов прозорец, който излиза при натискане на бутон "Edit" или "Add" при избран ред от таблицата.


Работа с DataGrid контролата – пример


С настоящия пример ще илюстрираме работата с DataGrid контролата в Windows Forms и сложното свързване (complex data binding) на таблица от DataSet с DataGrid.

Ето стъпките за изграждане на нашето приложение:



  1. Стартираме VS.NET и създаваме нов Windows Forms проект.

  2. Задаваме на главната форма име MainForm и заглавие "DataGrid Demo". Променяме и името на файла от Form1.cs на MainForm.cs.

  3. Поставяме във формата една DataGrid контрола. За име на контро­ла­та задаваме DataGridTowns.

  4. Добавяме код, който при зареждане на формата (при събитие 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";

    }


  5. Приложението е готово и можем да го стартираме и тестваме.

Ако променим данните, визуализирани в DataGrid контролата, те ще се променят и в таблицата Towns от DataSet обекта.


TableStyles и дефиниране на стилове – пример


Настоящият пример илюстрира работата с DataGrid контролата в Windows Forms и възможностите за дефиниране на стилове за визуализацията на данните чрез колекцията TableStyles. Ще създадем просто приложение, подобно на това от предходния пример, но чрез колекцията TableStyles ще опре­делим как да бъдат визуализирани колоните на таблицата.

Ето и стъпките за изграждане на нашето приложение:



  1. Началните стъпки за изграждане на приложението са същите като стъпки от 1 до 4 в предишния пример. Изпълняваме ги и пре­ми­наваме към дефинирането на стиловете за визуализация на данните.



  1. Щракваме с десния бутон на мишката върху поставения в главната форма DataGrid и избираме Properties. В прозореца Properties на редактора избираме свойството TableStyles и щракваме върху бутона с многоточието, намиращ се в полето в дясно от него. Отваря се прозорец, който ни позволява да добавяме стилове за таблицата. Щракваме върху бутона Add, за да добавим нов стил. В дясната половина на прозореца можем да променяме свойствата на добавения стил. Намираме свойството Name и му задаваме стойност DataGridTableStyleTowns.

  2. На свойството MappingName задаваме стойност Towns. С това указ­ва­ме, че този стил се отнася за таблицата Towns. Задаваме на свой­ството AlternatingBackColor (указващо цвят, в който ще се оцве­тяват четните редове) стойност Info. Остана да зададем стилове за отделните колони.

  3. Щракваме върху бутона с многоточието, намиращ се в полето в дясно от свойството GridColumnStyles. Отваря се прозорец, който ни позволява да добавяме стилове за отделните колони. Щракваме върху бутона Add, за да добавим нов DataGridTextBoxColumn в ко­лекцията. Задаваме стойност DataGridTextBoxColumnName на свой­ството Name.



  1. Задаваме на свойството MappingName стойност name. Така указваме, че този стил се отнася за полето name. Задаваме на свойствата Alignment, HeaderText и NullText съответно стойности Center, "име на град" и "(няма данни)". Така заглавието на колоната ще е "име на град", текстът ще е центриран, а когато няма стойност в полето, в таблицата ще се визуализира "(няма данни)". Накрая указваме ширина на колоната, като на свойството width зададем стойност 200.

  2. Натискаме бутона [OK], за да запазим промените в колекцията със стиловете за колоните. След това натискаме бутона [OK] и в другия прозорец, за да запазим промените в стиловете за таблиците.

  3. Приложението е готово и можем да го стартираме и тестваме.

Забелязваме, че макар в таблицата Towns да има две колони, в нашия DataGrid се визуализира само едната. Това е така, защото се визу­ализират само полетата, за които са добавени стилове в колекцията GridColumnStyles. Това означава, че ако не искаме дадено поле да бъде визуализирано, просто не указваме стил за него.

Ще отбележим, че когато добавяме стил в колекцията GridColumnStyles, освен DataGridTextBoxColumn, можем да добавяме и DataGridBoolColumn. Това става, като щракнем върху стрелката, намираща се в дясната част на бутона Add, и от падащия списък изберем DataGridBoolColumn. Чрез DataGridBoolColumn определяме колона, която във всяка клетка съдържа поле с отметка, представящо булева стойност.




Сподели с приятели:
1   ...   14   15   16   17   18   19   20   21   ...   33




©obuch.info 2024
отнасят до администрацията

    Начална страница