Преглед на GridView
Какво е GridView
По отношение на функционалността това е същата таблица като DataGrid, всеки запис от който съответства на запис в източника на данни. Всяка колона може да бъде свързана с поле в източника на данни. В допълнение, GridView (като DataGrid) има заглавка, долен колонтитул и информация за пейджър.
GridView е деклариран като:
CompositeDataBoundControl е основният клас, който осигурява обвързване на данни (този клас от своя страна наследява DataBoundControl, който е основата за всички контроли, свързани с данни в ASP.NET 2.0.
IPostBackContainer и IPostBackEventHandler са необходими за обработка на всички контроли на PostBack, а внедряването на интерфейсите ICallbackContainer и ICallbackEventHandler ви позволява да използвате нов механизъм за клиентски асинхронни обаждания.
GridView има много свойства и събития, които определят поведението му. На първо място, това е свързване към източник на данни и получаване на данни, извеждане на данни, актуализиране на данни и сортиране и пейджинг.
Обектен модел на източник на данни
Този модел е схема, когато между самия източник на данни и изходния слой данни (в нашия случай това е GridView) има друг слой, който посредничи между източника и контрола за визуализация на данни и който осигурява общ интерфейс както за първо (източник на данни) и за второто (контроли за визуализация, било то нашият GridView или да кажем FormView). Например, помислете за един от основните контроли за визуализация - SqlDataSource. Както подсказва името, този контрол е предназначен за работа с SQL. На първо място, трябва да поставим този контрол върху формуляра (навсякъде във формуляра между таговете):
Тази контрола има 4 основни свойства, по имената на които можете да познаете предназначението им - SelectCommand, InsertCommand, UpdateCommand и DeleteCommand. Няма да се спирам на това как да предавам параметри на тези sql команди - това е достойно за отделна статия; това, което е важно за нас сега, е, че тези свойства описват командите на sql за всяко от 4-те действия с данни.
Вземане на проби, добавяне, актуализиране и изтриване на данни.
На първо място, трябва да свържем нашия GridView с контрола на източника. За да направите това, GridView има свойство DataSourceID, чиято стойност трябва да съвпада с идентификатора на контролата на източника. Бих искал да обърна внимание на факта, че GridView има и свойство DataSource, което се използва за обвързване на данни „по старомоден начин“ - в кода с присвояване на обект от тип IList. Използването на двете свойства едновременно ще доведе до грешка - трябва да използвате или DataSource, или DataSourceID.
И така, свързахме DataSource с контрола на източника на данни. Ако се зададе свойството SelectCommand (за обекта ObjectDataSource, това е SelectMethod) - данните, получени в резултат на изпълнението на тази команда (или метод в случая на ObjectDataSource), ще бъдат свързани с GridView.
Ако отворим страницата си сега, ще видим нещо като:

След това нека преминем към изтриване на редове (и записи от източника на данни). Както виждаме, DeleteCommand взема int параметър, наречен id и съответства на id на записа в таблицата. Знаем, че id е уникално поле и затова с добра съвест правим това поле ключът за нашия GridView:
След това трябва да добавим бутон за всеки ред, който ще премахне реда от GridView и от източника на данни. Най-лесният начин да направите това е да добавите нова колона CommandField:
Нека опитаме нашата страница в действие:

Отлично. Сега по-сложното действие е редактирането. За редактиране е необходимо да се прехвърли необходимия низ в състояние на редактиране. За целта добавете ShowEditButton = "true" в нашата (или в новата, каквато искате) колона CommandField