Опубликован: 01.03.2010 | Уровень: специалист | Доступ: платный
Дополнительный материал 1:

Практикум

< Лекция 7 || Дополнительный материал 1: 12345678910111213

Вывод данных таблицы

Добавляем на страницу MainPage.xaml элемент управления DataGrid. Он будет служить для отображения данных таблицы Product. Его название productGrid, он будет получать данные из источника данных ProductsData. Выводить мы будем только выбранные поля Color, Name, ModifiedDate, ProductNumber, ListPrice, Weight, WeightUnitMeasureCode, MakeFlag, FinishedGoodsFlag, ProductLine, Size, SizeUnitMeasureCode и StandardCost. Значение свойства AutoGenerateColumns надо задать False. Если этого не сделать, тогда будут выведены все поля плюс эти поля таблицы Product.

<data:DataGrid 
    x:Name="productGrid" 
    Margin="0,22,318,0"
    ItemsSource="{Binding Data, ElementName=ProductsData}" 
    AutoGenerateColumns="False" >
    <data:DataGrid.Columns>
        <data:DataGridTextColumn
        Header="Color"
        Binding="{Binding Color}"/>
        <data:DataGridTextColumn
        Header="Name"
        Binding="{Binding Name}"/>
        <data:DataGridTextColumn
        Header="Modified"
        Binding="{Binding ModifiedDate}"/>
        <data:DataGridTextColumn
        Header="ProductNumber"
        Binding="{Binding ProductNumber}"/>
        <data:DataGridTextColumn
        Header="Price"
        Binding="{Binding ListPrice}"/>
        <data:DataGridTextColumn
        Header="Weight"
        Binding="{Binding Weight}"/>
        <data:DataGridTextColumn
        Header="Unit"
        Binding="{Binding WeightUnitMeasureCode}"/>
        <data:DataGridCheckBoxColumn
        Header="Make"
        Binding="{Binding MakeFlag}"/>
        <data:DataGridCheckBoxColumn
        Header="Finished"
        Binding="{Binding FinishedGoodsFlag}"/>
        <data:DataGridTextColumn
        Header="ProductLine"
        Binding="{Binding ProductLine}"/>
        <data:DataGridTextColumn
        Header="Size"
        Binding="{Binding Size}"/>
        <data:DataGridTextColumn
        Header="Unit"
        Binding="{Binding SizeUnitMeasureCode}"/>
        <data:DataGridTextColumn
        Header="StandardCost"
        Binding="{Binding StandardCost}"/>
    </data:DataGrid.Columns>
</data:DataGrid>

Чтобы создать источник данных ProductsData, добавляем ссылку reference на библиотеку System.Windows.Ria.Controls:

Создание ссылки для элементов управления RIA

Рис. P.24. Создание ссылки для элементов управления RIA

На страницу MainPage.xaml добавляем:

xmlns:ria="clr-namespace:System.Windows.Controls;assembly=System.Windows.Ria.Controls"
xmlns:riaData="clr-namespace:System.Windows.Data;assembly=System.Windows.Ria.Controls"

Добавляем источник данных ProductsData на страницу:

<UserControl.Resources> 
    <ria:DomainDataSource 
        x:Name="ProductsData" 
        AutoLoad="True"
        QueryName="GetProductQuery">
        <ria:DomainDataSource.DomainContext>
            <DatabaseSilverlightApplication_Web:ProductContext/>
        </ria:DomainDataSource.DomainContext>            
    </ria:DomainDataSource> 
</UserControl.Resources>

Здесь указан метод GetProductQuery, возвращающий данные из базы и контекст, в который эти данные загружаются ProductContext. В атрибуты элемента DataGrid вставляем привязку к контексту ProductsData:

<data:DataGrid 
    ItemsSource="{Binding Data, ElementName=ProductsData}"

Теперь можно запустить приложение:

Отображение данных таблицы

увеличить изображение
Рис. P.25. Отображение данных таблицы

Теперь добавим интересный элемент управления "бегунок" ActivityControl.dll add reference. Данный элемент не является продуктом Microsoft и скачивается отдельно http://www.davidpoll.com/Download/ActivityControl9-14.zip

Создание ссылки для элемента управления ActivityControl

Рис. P.26. Создание ссылки для элемента управления ActivityControl

Обновим пространство имен страницы MainPage.xaml

xmlns:activity="clr-namespace:System.Windows.Controls;assembly=ActivityControl"

И добавим этот элемент на страницу, поместив описание DataGrid внутрь этого элемента:

<activity:Activity 
	IsActive="{Binding IsBusy, ElementName=ProductsData}">
    <data:DataGrid

Видим, что во время загрузки данных индикатор загрузки работает, а после исчезает:

Элемент управления ActivityControl

Рис. P.27. Элемент управления ActivityControl

Сортировка

Сортировка строк осуществляется методами самого элемента DataGrid. Свойство задается в описании DataGrid.

CanUserSortColumns="True"

По умолчанию значение свойства - True. По нажатию на поле осуществляется сортировка по возрастанию, при повторном нажатии - по убыванию.

< Лекция 7 || Дополнительный материал 1: 12345678910111213
Иван Циферблат
Иван Циферблат
Россия, Таганрог, 36, 2000