Pull to refresh

GridView, и с чем его едят

Reading time3 min
Views17K
В этом топике я расскажу об одном замечательном контроле ASP.NET GridView. Многие новички, я думаю, часто встречаются с проблемами в использовании этого контрола. Так же проблемы были и у меня. Отмечу, что в одиночку использовать данный контрол смысла почти нет. Всю свою мощь он проявляет при использовании с каким-либо из источников данных: SqlDataSource, LinqDataSource, ObjectDataSource и другие.
В своих примерах я буду использовать 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 :)
На сегодня немного не рассчитал сил, вот и написал мало
Tags:
Hubs:
Total votes 21: ↑13 and ↓8+5
Comments21

Articles