本文英文原版:
http://aspnet.4guysfromrolla.com/articles/061002-1.aspx
考察DataGrid控件 Part 5
导言:
在Part 2,我们阐述了如何使用BoundColumn来定制DataGrid的界面.DataGrid的AutoGenerateColumns属性设置为False后,我们就可以指定DataGrid显示哪些列,这些列的表头信息,格式等都可以通过BoundColumn来设置.虽然这个方法功能强大,并且可以定制数据显示的样式,但给人的感觉是仅仅局限于一个TD HTML标签,让我们使用标准的的 HTML表格吧。
除了DataGrid控件外,ASP.NET还包含DataList 和 Repeater控件,这些控件都允许你使用HeaderTemplates, ItemTemplates和FooterTempaltes这3种模板来定制HTML显示效果.从本质上说,可以在模板里定制HTML及出现在相应部位的绑定数据(HeaderTemplates指定表头数据、FooterTempaltes指定页脚数据,以此类推!)DataGrid支持基于每个列的功能,换句话说,在DataGrid的<Columns>标签里,我们可以用TemplateColumns来替换BoundColumns,以更好的改善输出效果.在本节我们探讨TemplateColumn的基础知识并使用它来定制DataGrid的输出效果.
使用TemplateColumn
跟BoundColumns一样,在使用TemplateColumn前首先需要将AutoGenerateColumns属性设为False,然后在<Columns>标签里放置TemplateColumn控件.我们注意到可以在DataGrid里同时使用BoundColumns和TemplateColumns,就像下面的示例显示的那样:
<asp:datagrid id="dgPopularFAQs" runat="server"
AutoGenerateColumns="False">
<Columns>
<asp:BoundColumn DataField="FAQID" ItemStyle-Width="10%"
ItemStyle-HorizontalAlign="Center" HeaderText="FAQ ID" />
<asp:TemplateColumn HeaderText="FAQ Information">
...
</asp:TemplateColumn>
</Columns>
</asp:datagrid>
上述代码的DataGrid控件将使每行记录包含2列,一个是BoundColumn(FAQID),另一个是TemplateColumn,它包含哪些内容我们还没有指定.(关于BoundColumns的更多信息可参阅Part 2),我们还注意到可以包含多个TemplateColumns以对应多个列.
那么怎么为TemplateColumn指定HTML内容呢?TemplateColumn控件自身包含了一些与用户界面相关的属性,比如HeaderText,它指定了列的表头信息;再比如Visible,它指定是否将该列显示出来.除此之外,还包括这些标签:
1.ItemTemplate——指定每个列将显示哪些内容
2.HeaderTemplate——指定列的表头信息
3.FooterTemplate——指定列的页脚信息
4.EditItemTemplate——指定处于编辑或删除状态时的界面.当对DataGrid的记录进行编辑/更新/删除时才会用到它.
这些模板同时也可以包含一个数据绑定值.比如某个TemplateColumn可能将一个数据库列的值用粗体显示出来.为了显示DataGrid的数据源的一个动态数据(dynamic data),我们可以用下面的语法:
<%# DataBinder.Eval(Container.DataItem, "ColumnName") %>
这就是所谓的“数据绑定”命令.上面的代码是将一个“ColumnName”列从DataItem里找出来(DataItem就是DataGrid的数据源的当前记录——数据源很可能是一DataReader或DataSet)
因此,DataGrid的TemplateColumn可以包含一个ItemTemplate模板,看起来像这样:
<asp:TemplateColumn HeaderText="FAQ Information">
<ItemTemplate>
<b><%# DataBinder.Eval(Container.DataItem, "ColumnName") %></b>
</ItemTemplate>
</asp:TemplateColumn>
TemplateColumn相对于BoundColumn的优点
到目前为止,你还没有完全认识到TemplateColumn带来的好处.我们上面的示例用BoundColumn也可以实现。但是如果需要在DataGrid的一列里显示2个数据库列的值又怎么办呢?用BoundColumn是行不通的,而TemplateColumn却可以办到.
让我们看更复杂点的例子.在本系列前面的演示例子,我们将ASPFAQs.com网站上最常见的10个FAQs显示出来.当然,我们始终用的是BoundColumns,所以DataGrid里的每一列包含的是某个数据库列的值.假设我们希望DataGrid总共只包含2个列,第1列是展示FAQ的ID(即FAQID),第2列展示Category Name,Description和ViewCount。如果使用TemplateColumns的话,很简单,代码如下:
<asp:datagrid id="dgPopularFAQs" runat="server"
AutoGenerateColumns="False">
<Columns>
<asp:BoundColumn DataField="FAQID" ItemStyle-Width="10%"
ItemStyle-HorizontalAlign="Center" HeaderText="FAQ ID" />
<asp:TemplateColumn HeaderText="FAQ Information">
<ItemTemplate>
<table border="0">
<tr>
<td align="right"><b>Description:</b></td>
<td><%# DataBinder.Eval(Container.DataItem, "Description") %></td>
</tr>
<tr>
<td align="right"><b>Category Name:</b></td>
<td><%# DataBinder.Eval(Container.DataItem, "CatName") %></td>
</tr>
<tr>
<td align="right"><b>View Count:</b></td>
<td><%# DataBinder.Eval(Container.DataItem, "ViewCount", "{0:#,###}") %>
</td>
</tr>
</table>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>
演示页面:http://aspnet.4guysfromrolla.com/demos/dgExample12.aspx
注意,最后一个数据绑定语句使用了DataBinder.Eval的另一种形式—它包含了一个可选参数,为该列指定一个格式字符串.该格式字符串#,###指明每隔3个数字一个逗号“,”({0:formatString}看起来有点让人糊涂—它是将格式字符串formatString运用于第0个 argument,换句话说,就是当前DataItem的ViewCount列)
结语:
本节我们考察了如何使用TemplateColumn来优化界面.毫无疑问,TemplateColumn比BoundColumn更能极大的提升HTML的输出效果.另外,我们后面的文章将会讲到,当用户选择编辑某行时,可以使用TemplateColumn来定制DataGrid row的外观.
祝编程愉快!
分享到:
相关推荐
在Windows编程领域,DataGrid控件是一个非常关键的组件,特别是在使用VC++进行开发时。这个控件允许程序员创建和展示结构化的数据,通常与数据库交互,为用户提供一种直观的方式来查看和编辑表格形式的数据。本篇...
MFC DataGrid 控件用法详解 MFC 中的 DataGrid 控件是一个非常实用的控件,用于显示数据,它提供了很多实用的功能,例如显示查询结果、控制显示、格式化数据等。在这里,我们将详细介绍 MFC DataGrid 控件的用法,...
在VB(Visual Basic)编程环境中,`DataGrid`控件是一个非常重要的组件,它用于显示数据源中的数据,如数据库、数组或记录集。`DataGrid`控件为用户提供了一种交互式的表格形式,可以进行浏览、编辑和操作数据。在本...
VB中的DataGrid控件是一个非常实用的工具,用于在用户界面中展示和操作数据库中的数据。它呈现数据的方式类似于电子表格,提供了灵活的功能,如编辑、排序和格式化。以下是对DataGrid控件的详细说明: 1. **...
"Datagrid 控件"是这样一个控件,常用于显示和操作数据表格式的信息,如数据库中的记录。它允许用户查看、排序和编辑数据,是Windows应用程序开发中常见的组件。 在Windows编程领域,控件通常是通过动态链接库(DLL...
### VC++中DataGrid控件的使用 #### 一、引言 Microsoft ADODataControl 控件是 ActiveX 控件中用于访问数据库的关键组件。它利用 Microsoft ActiveX 数据对象 (ADO) 快速建立起数据绑定 (Data Binding) 控件与...
Windows窗体DataGrid控件是NET 1.0/1.1推出的控件,在VS2005中亦可以继续使用,虽然它在功效方面不如NET 2.0新增的控件DataGridView,但它仍有用武之处,特别是对于已完成的项目中使用了该组件时,没有必要更换它,...
在.NET框架中,DataGrid控件是一个常用的组件,用于显示数据源中的表格数据。它广泛应用于Windows Forms和ASP.NET应用程序中。本节我们将深入探讨如何在DataGrid控件中设置单元格的数据显示格式,以便更好地呈现和...
在.NET框架中,DataGrid控件是一个非常重要的组件,它被广泛用于展示和操作数据集。这个控件允许用户在Windows Forms应用程序中显示表格形式的数据,并且提供了多种交互功能,如排序、选择和编辑。本篇文章将深入...
5. **处理用户输入**:DataGrid控件的事件驱动特性使得我们能捕获用户的交互,如点击、选择和编辑。比如,当用户在某单元格中输入数据后,我们可以监听CellEndEdit事件,然后更新后台数据源以保存更改。 6. **添加...
在Microsoft Visual C++ (VC++) 开发环境中,ADO(ActiveX Data Objects)和DataGrid控件是用于数据库操作的强大工具。本教程将详细介绍如何利用它们实现对数据库的遍历、修改、删除和添加功能。 首先,ADO是微软...
在ASP.NET中,`DataGrid`控件是一个强大的数据展示工具,它允许开发者以表格的形式展示来自数据库或其他数据源的数据。本实例将深入讲解如何使用`DataGrid`控件连接数据库并展示数据。 1. **DataGrid控件简介** `...
用于解决vb6精简版没有datagrid控件的情况 安装完成后,可能出现“该部件的许可证信息没有找到,在设计环境中,没有合适的许可证使用该功能”提示 请运行vb6cli.exe,该软件我已上传至csdn。并且微软官网提供下载。
在IT行业中,自定义控件的开发是一项重要的技能,尤其是对于C++程序员来说,能够创建自己的数据网格(datagrid)控件意味着可以灵活地定制界面,满足特定项目的需求。标题中的"C++自定义的datagrid控件"就是这样一个...
ASP.NET中的DataGrid控件是开发Web应用程序时用于展示数据的关键组件,特别是在处理与数据库相关的数据展示场景。熟练掌握DataGrid控件的应用技巧对于任何Web开发者来说都是至关重要的。 DataGrid控件允许以表格的...
在本文中,我们将深入探讨如何在Visual Studio 2010中的WPF(Windows Presentation Foundation)环境中使用DataGrid控件。DataGrid控件是WPF中一个强大的数据展示和编辑工具,尤其适用于处理表格形式的数据。我们将...
本文将深入讲解如何利用博图WinCC V16中的ADODB组件和DataGrid控件来显示来自SQL Server的数据。 ADODB(ActiveX Data Objects Database)是微软提供的一个数据库访问接口,支持多种数据库,包括SQL Server。在...
### DataGrid 控件的使用详解 #### 一、概述 DataGrid 控件是 Visual Basic (VB) 中一个非常重要的控件,它主要用于显示和编辑来自数据库的数据。对于初学者而言,掌握 DataGrid 控件的基本使用方法是十分必要的。...