В этом топике я расскажу об одном замечательном контроле ASP.NET GridView. Многие новички, я думаю, часто встречаются с проблемами в использовании этого контрола. Так же проблемы были и у меня. Отмечу, что в одиночку использовать данный контрол смысла почти нет. Всю свою мощь он проявляет при использовании с каким-либо из источников данных: SqlDataSource, LinqDataSource, ObjectDataSource и другие.
В своих примерах я буду использовать ObjectDataSource.
Итак, приведу простой пример:
Что здесь для нас интересного? Первое, обязательное – это атрибут runat со значением ”server”. Второе – DataSourceID. В качестве значения указывается идентификатор источника данных, распложенного на странице. Одно важное замечание – GridView может использоваться только внутри серверной формы – <fоrm runаt=”sеrvеr”>. Пара следующих атрибутов, AllowPaging & PageSize задаются для пейджинга. GridView поддерживает пейджинг. Правда, если Вы используете ObjectDataSource, то организовывать пейджинг Вам придется вручную. В моем проекте я использую ORM, написанную в нашей фирме, для включения пейджинга мне приходится перекраивать sql запрос к БД. С SqlDataSource вполне возможно ничего крутить руками не придется. CssClass – говорит сам за себя. AutoGenerateColumns=”false” – Вы сами определяете. Какие колонки показывать (см. вложенный элемент Columns). На первый взгляд, ничего сложного. Ниже приведу ObjectDataSource, настроенный для этого GridView
Пока объяснять что к чему я тут не буду. Этого мы коснемся дальше, когда будем пытаться организовать пейджинг средствами GridView & ObjectDataSource.
GridView поддерживает теймплейты. Теймплейты можно задать для пейджинга, а также для случая, когда источник вернул нам пустые данные (или пусто, или ничего не вернул, кому как будет понятнее).
Кроме этого, возможны широкие настройки стилей для всех составных элементов GridView – header, pager, row, cell и т.п.
Ну и пока закончу знакомить с GridView. Позже расскажу про пейджинг, настройку из codebehind, написание методов выбора данных для ObjectDataSource и многое-многое другое.
Постараюсь ответить на все вопросы. Задавайте.
UPD: завтра про пейджинг, надеюсь уровень будет выше msdn :)
На сегодня немного не рассчитал сил, вот и написал мало
В своих примерах я буду использовать ObjectDataSource.
Итак, приведу простой пример:
<asp:GridView ID="OperationHistoryList" runat="server"
DataSourceID="OpHistoryListDS"
AllowPaging="True"
PageSize="15"
CssClass="data" AutoGenerateColumns="False"
onload="OperationHistoryList_Load"
EnableViewState="False">
<Columns>
<asp:BoundField DataField="ДатаВремяЗдесь" />
<asp:BoundField DataField="СтатусПользователя" />
<asp:BoundField DataField="КомментКСтатусу" />
</Columns>
</asp:GridView>
* This source code was highlighted with Source Code Highlighter.
Что здесь для нас интересного? Первое, обязательное – это атрибут runat со значением ”server”. Второе – DataSourceID. В качестве значения указывается идентификатор источника данных, распложенного на странице. Одно важное замечание – GridView может использоваться только внутри серверной формы – <fоrm runаt=”sеrvеr”>. Пара следующих атрибутов, AllowPaging & PageSize задаются для пейджинга. GridView поддерживает пейджинг. Правда, если Вы используете ObjectDataSource, то организовывать пейджинг Вам придется вручную. В моем проекте я использую ORM, написанную в нашей фирме, для включения пейджинга мне приходится перекраивать sql запрос к БД. С SqlDataSource вполне возможно ничего крутить руками не придется. CssClass – говорит сам за себя. AutoGenerateColumns=”false” – Вы сами определяете. Какие колонки показывать (см. вложенный элемент Columns). На первый взгляд, ничего сложного. Ниже приведу ObjectDataSource, настроенный для этого GridView
<asp:ObjectDataSource ID="OpHistoryListDS" runat="server"
SelectMethod="SelectByMaster"
TypeName="OperationHistory"
EnableViewState="false">
<SelectParameters>
<asp:Parameter Name="maximumRows" Type="Int32" />
<asp:Parameter Name="startRowIndex" Type="Int32" />
<asp:QueryStringParameter Name="masterId" QueryStringField="parent_id" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
* This source code was highlighted with Source Code Highlighter.
Пока объяснять что к чему я тут не буду. Этого мы коснемся дальше, когда будем пытаться организовать пейджинг средствами GridView & ObjectDataSource.
GridView поддерживает теймплейты. Теймплейты можно задать для пейджинга, а также для случая, когда источник вернул нам пустые данные (или пусто, или ничего не вернул, кому как будет понятнее).
Кроме этого, возможны широкие настройки стилей для всех составных элементов GridView – header, pager, row, cell и т.п.
Ну и пока закончу знакомить с GridView. Позже расскажу про пейджинг, настройку из codebehind, написание методов выбора данных для ObjectDataSource и многое-многое другое.
Постараюсь ответить на все вопросы. Задавайте.
UPD: завтра про пейджинг, надеюсь уровень будет выше msdn :)
На сегодня немного не рассчитал сил, вот и написал мало