|
返回页首 研究 DataGrid Web 控件 DataGrid Web 控件是这三个数据 Web 控件中功能最多的,但是在自定义控件生成的实际 HTML 标记时,它又是最不灵活的。 呈现的 HTML 标记中的这种不灵活性,是由于 DataGrid 是设计用于使用 HTML <table> 以表格形式显示数据所造成的。 因此,对于每一条绑定到 DataGrid 的记录,都会创建一个单独的表行(<tr>),对于要显示的记录中的每一个字段,都会创建一个单独的表列(<td>)。
DataGrid 提供了许多功能,可极大地提高要显示的数据的可用性。 例如,把 DataGrid 的 AllowSorting 属性设置为 True 并添加一点源代码,开发人员就可以把一个普通的 DataGrid 变成一个其数据可以由最终用户排序的 DataGrid。 另外,再增加一点工作量,开发人员就能增强 DataGrid 的功能以允许数据分页或数据的内联编辑。 这些功能明显增强了 DataGrid 的可用性。
除了在可用性方面得分很高,DataGrid 还提供了很短的开发时间。 要使用 DataGrid 开始在 ASP.NET Web 页面中显示数据,只需要把 DataGrid 添加到 Web 页面中并编写两行必要的代码: 第一行把数据绑定到 DataGrid 的 DataSource,第二行调用 DataGrid 的 DataBind() 方法。 显然,随着添加到 DataGrid 中的功能数量的增加,开发时间也增加了,但这只是把开发时间和其他数据 Web 控件进行比较。 假设您要允许对 Repeater 显示的数据进行排序。 添加这样的功能是一定可能的,但是与用 DataGrid 完成同样的操作相比,这需要明显多很多的时间和精力。
尽管 DataGrid 具有良好的可用性和开发时间得分,但是这个控件有两个固有的缺点。 第一,正如前面所谈到的,DataGrid 在对所呈现的 HTML 标记进行自定义方面的功能很有限。 是的,您可以自定义 DataGrid 的不同行和列的字体、颜色和边框,但是事实仍然是,当 DataGrid 显示数据时,结果将是一个 HTML <table>,DataSource 中的每一条记录都对应其中一个 <tr>,每一个字段都对应其中一个 <td>。
具体地说,DataGrid 中的每一列都是一个从 DataGridColumn 类中派生的类实例。 有五个内置的 DataGrid 列类型:
BoundColumn
ButtonColumn
EdITColumn
HyperLinkColumn
TemplateColumn
每一个列类型都提供数据或提供某种允许用户和 DataGrid 进行交互的接口。 例如,BoundColumn 以纯文本显示 DataSource 字段的值,而 HyperLinkColumn 则会显示一个超级链接,其文字和 URL 部分可能是 DataSource 字段。 除了这些内置的列类型,通过创建 DataGridColumn 类的派生类,还可以创建自定义 DataGrid 列类型。 (有关创建一个用于扩展 BoundColumn 功能以限制显示字符数的列的示例,请参阅 Creating a Custom DataGridColumn Class。)
有了这么多的 DataGrid 列类型,可能就不理解为什么 DataGrid 呈现的 HTML 标记不能进行高度自定义了。 要知道,虽然每一个 DataGrid 列类型在呈现时生成不同的 HTML,但是每一列都包含在一组 <td> 标记中,每一行都包含在一组 <tr> 标记中。 因此,即使可以用 TemplateColumn 自定义每一行的特定列的 HTML 输出,而 DataGrid 仍然呈现为 HTML <table>,其中每一行使用一个 <tr>,每一列使用一个 <td> 。 DataGrid 的这种限制禁止了更多具有创造性的数据显示。 例如,如果要在每一表行中显示五条记录,就不能使用 DataGrid,必须使用DataList 或 Repeater。 另外,如果要在除 <table> 之外的 HTML 标记中显示数据,很遗憾,就不能使用 DataGrid 了。 上一页 [1] [2] [3] [4] 下一页 |