摘要
当 GridView 系结的 DataSource 资料笔数为 0 时,会依 EmptyDataTemplate 及 EmptyDataText 的设定来显示无数据的状态。若我们希望 GridView 在无数据时,可以显示字段标题,有一种作法是在 EmptyDataTemplate 中手动在设定一个标题列,不过这种作法很麻烦。GridView 控件可不可以直接透过属性设定就可以在无数据显示字段标题呢?答案是肯定的,本文将扩展 GridView 控件来达成此需求。

扩展 GridView 控件
我们继承 GridView 命名为 TBGridView,新增一个 EmptyShowHeader 属性,来设定无数据时是否显示字段标题。覆写 CreateChildControls 方法,当 Mybase.CreateChildControls 传回 0 时,表示 DataSource 无数据,此时就呼叫 CreateEmptyTable 方法来建立无数据只显示标题的表格。
在 CreateEmptyTable 方法中,会复制 Columns 的集合,来输出所有字段的标题列。接下来会在标题列下方新增一列合并的数据列,用来显示无数据时的显示文字,即显示 EmptyDataText 属性值。
 1扩展 GridView 控件 - 无数据时显示标题列Imports System
 2扩展 GridView 控件 - 无数据时显示标题列Imports System.Collections.Generic
 3扩展 GridView 控件 - 无数据时显示标题列Imports System.ComponentModel
 4扩展 GridView 控件 - 无数据时显示标题列Imports System.Text
 5扩展 GridView 控件 - 无数据时显示标题列Imports System.Web
 6扩展 GridView 控件 - 无数据时显示标题列Imports System.Web.UI
 7扩展 GridView 控件 - 无数据时显示标题列Imports System.Web.UI.WebControls
 8扩展 GridView 控件 - 无数据时显示标题列Imports System.Drawing
 9扩展 GridView 控件 - 无数据时显示标题列
10End Namespace

测试程序
我们拖曳一个 TBGridView 控件至页面上,设定 EmptyShowHeader="True"。
1扩展 GridView 控件 - 无数据时显示标题列<bee:TBGridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1"
2扩展 GridView 控件 - 无数据时显示标题列            EmptyShowHeaer="True" EmptyDataText="沒有資料錄可顯示。" AllowPaging="True" DataKeyNames="EmployeeID" CellPadding="4" ForeColor="#333333" GridLines="None">

执行程序,当 GridView 有数据时的画面如下
扩展 GridView 控件 - 无数据时显示标题列

而当 GridView 无数据时,就会显示字段列及无数据的显示文字(EmptyDataText)。
扩展 GridView 控件 - 无数据时显示标题列

相关文章: