|
https://technet.microsoft.com/en-us/library/ms143221(v=sql.105).aspx |
Элементы-потребители данных. Data-Bound Controls
Форма, которая читает информацию из этого файла:
<%@ Page Language="C#" Debug="true" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Xml" %>
<script runat="server">
void bindData()
{
String xmlFilename = Server.MapPath("") + "\\nobel.xml";
DataSet newDataSet = new DataSet();
newDataSet.ReadXml(xmlFilename);
DataTable newDataTable = newDataSet.Tables[1];
DataGrid1.DataSource = newDataTable;
DataGrid1.DataBind();
}
void Page_Load()
{
if (!IsPostBack)
bindData();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Data Grid Control example</title>
</head>
<body>
<form runat="server">
<asp:DataGrid id="DataGrid1" runat="server"
CellSpacing="10"
BorderWidth ="0" BackColor="AliceBlue" EditItemIndex =
"1">
<HeaderStyle BackColor="#AAAADD" Font-Size="20pt" Font-
Bold = "True">
</HeaderStyle>
<AlternatingItemStyle BackColor="#80FF80" />
</asp:DataGrid>
</form>
</body>
</html>Поменяв индекс в DataTable newDataTable = newDataSet.Tables[1] на 3, получим страницу с другими данными — лауреатов премии по литературе.
По умолчанию элемент DataGrid сам определяет количество полей в источнике данных и генерирует колонки таблицы. Это определяется свойством AutoGenerateColumns. С элементом управления DataGrid могут быть связаны не все типы данных. Поддерживаются примитивные типы, строки, DataTime и Decimal. Если в поле неподдерживаемый тип, столбец не будет создан. Если ни одного подходящего поля нет, будет выброшено исключение.
DataGrid имеет заголовок ( Header ), который по умолчанию виден, и нижний колонтитул ( Footer ). При автоматической генерации в заголовке каждого столбца выводится название поля.
Если AutoGenerateColumns установить в False, можно самим управлять колонками и определять более сложный его вид. В таком случае надо включать в DataGrid элементы BoundColumn. Некоторые свойства BoundColumn:
- DataField определяет поле источника данных;
- DataFormatString задает формат вывода данных;
- ReadOnly делает поле недоступным для редактирования.
В заголовке и нижнем колонтитуле можно установить любой текст, а в заголовке — еще и картинку ( HeaderText, FooterText, HeaderImageUrl ).
В ячейку генерируемой DataGrid таблицы вставляется LiteralControl, текст которого берется из источника данных и форматируется в соответствии с DataFormatString. Для редактируемой строки в ячейке появляется TextBox.
Есть и другие типы колонок.
ButtonColumn отображает в каждой строке командную кнопку. Если связать ее с полем, на кнопках будут надписи из этого поля.
EditCommandColumn показывает кнопки для редактирования.
HyperLinkColumn превращает текст в гиперссылки. Например, поле PhotoPath можно показать в такой колонке, и тогда щелчок по ссылке покажет фотографию.
TemplateColumn позволяет определить шаблон отображения, как в DataList.
При желании можно программно скрывать и показывать колонки, например:
DataGrid1.Columns[1].Visible = !(DataGrid1.Columns[1].Visible);
У элемента DataGrid есть 7 свойств, задающих стили различных его частей или типов строк. Все они имеют тип TableItemStyle. Это AlternatingItemStyle, EditItemStyle, FooterStyle, HeaderStyle, ItemStyle, PagerStyle и SelectedItemStyle. Стили образуют иерархию, то есть атрибут "Стиль", который выше в иерархии, наследует те, которые ниже, если он его не переопределяет. Порядок в ней такой:
- EditItemStyle — стиль редактируемой строки;
- SelectedItemStyle — стиль выбранной строки;
- AlternatingItemStyle — стиль каждой второй строки;
- ItemStyle — стиль строки по умолчанию;
- ControlStyle — все свойства, которые влияют на внешний вид элемента, например BackColor. PagerStyle, FooterStyle, HeaderStyle тоже его наследуют.
- PagerStyle — стиль пейджера, то есть номеров страниц-гиперссылок, при выборе которых таблица перелистывается. Чтобы пейджер появился, должен быть установлен атрибут AllowPaging и количество записей должно быть больше PageSize. Все эти свойства удобно устанавливать с помощью PropertyBuilder.
В Visual Studio 2005 есть возможность автоформатирования, как и у DataList.
Новый вариант, без автоматической генерации колонок и со стилями:
<asp:DataGrid ID="DataGrid2" runat="server" BackColor="#FFE0C0"
ShowFooter="True" AutoGenerateColumns="False" PageSize="3">
<AlternatingItemStyle BackColor="#C0FFC0" />
<ItemStyle BackColor="#FFFFC0" />
<EditItemStyle BackColor="#C0C000" Font-Size="XX-Large" />
<Columns>
<asp:BoundColumn DataField="name" FooterText="Name"
HeaderText="Фамилия"></asp:BoundColumn>
<asp:BoundColumn DataField="nationality"
FooterText="Country" HeaderText="Страна"></asp:BoundColumn>
<asp:BoundColumn DataField="winningdate" FooterText="Year
won" HeaderText="Год"></asp:BoundColumn>
<asp:BoundColumn DataField="work" FooterText="Work"
HeaderText="Произведение"></asp:BoundColumn>
</Columns>
<FooterStyle Font-Bold="True" Font-Italic="False" Font-
Overline="False" Font-Strikeout="False" Font-Underline="False" />
<HeaderStyle Font-Bold="True" Font-Italic="False" Font-
Overline="False" Font-Strikeout="False" Font-Underline="False" />
</asp:DataGrid>
