Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C# ПІДРУЧНИКИ / c# / Manning - Windows.forms.programming.with.c#.pdf
Скачиваний:
108
Добавлен:
12.02.2016
Размер:
14.98 Mб
Скачать

Figure 17.1 Our new application will include a tab control with a data grid on one tab page and a set of data-bound controls on a second tab page.

We begin with the DataGrid control, which displays a data source in tabular format. We will look at this class in some detail, and discuss the concept of simple data binding later in the chapter.

17.1DATA GRIDS

A data grid is just that: a grid in which data is displayed. The DataGrid class encapsulates this concept, allowing various collections of data to be displayed and manipulated by a user. The concept of data binding is central to the DataGrid class, as data is typically displayed in the control by binding an existing database table or collection class to the data grid object.

As shown in figure 17.1, the DataGrid class displays data as a set of rows and columns. The grid in general represents a specific collection of data, and this case represents a PhotoAlbum instance. Each row, in turn, represents a specific item in the overall collection, and each column represents a specific field that can be assigned to each item. In our application, each row will represent a Photograph object, and each column a possible property of a photograph.

There are a number of terms related to DataGrid controls. A summary of these is shown in figure 17.2 as they relate to our application. An overview of the DataGrid class is provided in .NET Table 17.1.

DATA GRIDS

565

b

 

 

 

G

 

c

d

 

F

 

E

 

Figure 17.2

This chapter will discuss many of the terms and classes related to data grids.

bCaption

Displays a short string describing the table.

cDataGridTableStyle class

Used to customize the appearance and behavior of tables.

DataGridColumnStyle class

Used to customize the order, appearance and behavior of columns. The framework supports text and boolean columns by default.

dRow Header

The area in front of a row. The small triangle indicates the current item.

eGrid Lines

The color and style of lines are configurable.

fCell

Refers to an individual value within the grid.

gColumn Header

Shows the name of each column.

The ListView class discussed in chapter 14 can also be used to present a table of information. The Windows Forms namespace provides explicit classes to represent the rows and columns in a list view. As you may recall, each item, or row, in the list is represented by the ListViewItem class instance, and each column by a ListViewSubItem instance and is presented based on a ColumnHeader instance.

As illustrated by figure 17.2, the DataGrid class takes a somewhat different approach. The contents of the grid are contained in a single collection, such as an array, a photo album, or a database table. Classes exist to configure the style in which the provided data is displayed, including colors, column ordering, and other properties. We will discuss the details of these style classes later in the chapter.

566

CHAPTER 17 DATA BINDING

.NET Table 17.1 DataGrid class

The DataGrid class represents a control that displays a collection of data as a grid of rows and columns. The data displayed and the style in which it is presented is fully configurable. This class is part of the System.Windows.Forms namespace, and inherits from the Control class. See .NET Table 4.1 on page 104 for a list of members inherited by this class.

 

AllowNavigation

Gets or sets whether navigation is permitted.

 

AlternatingBackColor

Gets or sets the background color to use on

 

 

every other row in the grid to create a ledger-

 

 

like appearance.

 

CaptionText

Gets or sets the text to appear in the caption

 

 

area.

 

CaptionVisible

Gets or sets whether the caption is visible.

 

 

Other properties related to this and other grid

 

 

areas are also provided.

 

CurrentCell

Gets or sets a DataGridCell structure

 

 

representing the cell in the grid that has the

 

 

focus.

Public Properties

CurrentRowIndex

Gets or sets the index of the selected row.

 

DataMember

Gets or sets which list in the assigned data

 

 

source should be displayed in the grid.

 

DataSource

Gets or sets the source of data for the grid.

 

Item

Gets or sets the value of a cell. This property is

 

 

the C# indexer for this class.

 

ReadOnly

Gets or sets whether the grid is in read-only

 

 

mode.

 

RowHeaderWidth

Gets or sets the width of row headers in pixels.

 

TableStyles

Gets the collection of DataGridTableStyle

 

 

objects specifying display styles for various

 

 

tables that may be displayed by the grid.

 

 

 

 

BeginEdit

Attempts to begin an edit on the grid.

 

HitTest

Returns location information within the grid of

 

 

a specified point on the screen. This works

Public Methods

 

much like the HitTest method in the

 

MonthCalendar class.

 

SetDataBinding

Assigns the DataSource and DataMember

 

 

properties to the given values at run time.

 

Unselect

Deselects a specified row.

 

 

 

 

CurrentCellChanged

Occurs when the current cell has changed.

 

DataSourceChanged

Occurs when a new data source is assigned.

Public Events

Navigate

Occurs when the user navigates to a new

 

 

 

table.

 

Scroll

Occurs when the user scrolls the data grid.

 

 

 

DATA GRIDS

567

17.1.1CREATING THE MYALBUMDATA PROJECT

While the DataGrid class includes numerous members for customizing the appearance and behavior of the control, it is possible to create a very simple grid with only a few lines of code. We will begin with such an application, and enhance it over the course of the chapter.

The following table lays out the creation and initial layout of our new application.

CREATE THE MYALBUMDATA PROJECT

 

 

 

 

 

Action

 

 

 

Result

 

 

 

 

 

 

 

 

 

 

1

 

Create a new project and solution in

The new solution is shown in the Solution Explorer

 

 

Visual Studio .NET called

window, with the default Form1.cs [Design] window

 

 

“MyAlbumData.”

 

 

 

 

 

displayed.

 

 

 

 

 

 

 

 

 

 

2

 

Rename the Form1.cs file and

 

 

 

related class file to our standard

 

 

 

MainForm class and assign some

 

 

 

initial settings for this form.

 

 

 

 

 

 

Settings

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Property

 

 

 

Value

 

 

 

 

(Name)

 

MainForm

 

 

 

 

Size

 

 

450, 300

 

 

 

 

 

 

Text

 

MyAlbumData

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

Drag a Label, ComboBox,

 

 

 

DataGrid, and Button control onto

 

 

 

the form. Arrange these controls as

 

 

 

shown in the graphic.

 

 

 

 

 

 

 

 

 

Settings

 

 

 

 

 

 

 

 

 

 

 

 

 

Control

Property

 

Value

 

 

 

Label

 

Text

 

 

&Album

 

 

 

ComboBox

 

(Name)

 

 

cmbxAlbum

 

 

 

 

Anchor

 

 

Top, Left, Right

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(Name)

 

 

gridPhoto-

 

 

 

DataGrid

 

 

 

 

 

Album

 

 

 

 

Anchor

 

 

Top, Bottom,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Left, Right

 

 

 

 

 

 

(Name)

 

 

btnClose

 

 

 

Button

 

Anchor

 

 

Bottom, Right

 

 

 

 

 

 

Text

 

 

&Close

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

Create a Click event handler for

private void btnClose_Click

 

 

the Close button to shut down the

(object sender, System.EventArgs e)

 

 

application.

 

 

 

 

 

 

 

{

 

 

 

 

 

 

 

 

 

Close();

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

}

 

 

 

 

 

 

 

 

 

 

 

 

 

568

CHAPTER 17 DATA BINDING

Соседние файлы в папке c#