正文
3.2. GridView 控件
GridView控件可称之为数据表格控件,它以表格的形式显示数据源中的数据,每列表示一个字段,而每行表示一条 记录,可以将其理解为数据库技术中的视图。
3.2.2. 使用GridView控件绑定数据源
使用GridView控件绑定数据源主要用到
- DataSource属性,用来指定数据源
- DataBind方法,用来执行数据绑定
如下代码实现了将SQL Server数据库中的数据通过GridView控件显示到ASP页面中
// .aspx文件 <body> <form id="form1" runat="server"> <div> <!-- GridView控件绑定数据源 --> <asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None"> <AlternatingRowStyle BackColor="White" ForeColor="#284775" /> <EditRowStyle BackColor="#999999" /> <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" /> <RowStyle BackColor="#F7F6F3" ForeColor="#333333" /> <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /> <SortedAscendingCellStyle BackColor="#E9E7E2" /> <SortedAscendingHeaderStyle BackColor="#506C8C" /> <SortedDescendingCellStyle BackColor="#FFFDF8" /> <SortedDescendingHeaderStyle BackColor="#6F8DAE" /> </asp:GridView> </div> </form> </body> // .aspx.cs文件 protected void Page_Load(object sender, EventArgs e){ SqlConnection sqlConnection = new SqlConnection("Server=DEITIVOD;Database=db_LibraryMS;User Id=sa;pwd=admin"); SqlDataAdapter sqlDataAdapter = new SqlDataAdapter("select * from leaveword;", sqlConnection); DataSet dataSet = new DataSet(); sqlDataAdapter.Fill(dataSet); GridView1.DataSource = dataSet; // 指定数据集 GridView1.DataBind(); // 执行数据绑定 }
数据库中leaveword数据表的数据如下所示:
执行效果如下,ASP页面中显示的数据:
3.2.3. 自定义GridView控件的列字段名
GridView中的数据列分为7种类型
数据列 | 说明 |
BoundFiled | 最常用的数据列,用来显示文本 |
CheckBoxFiled | 用来显示Boolean值 |
CommandFiled | 用来显示执行选择、编辑和删除操作的命令按钮 |
ImageFiled | 用来显示图片 |
HyperLinkFiled | 用来将数据以超链接的形式显示出来 |
ButtonFiled | 用来为GridView控件创建命令按钮,该按钮可以操作其所在行的数据 |
TemplateFiled | 用来给用户提供自定义类型的数据列 |
在VS开发环境中按下面的步骤操作,以BoundFiled 为例将GridView中的字段名修改为中文显示:
如果只想显示我们自定义的列,可以将AutoGenerateColumns设置为False
上面两张图的内容也可以通过下面的代码实现:
// .aspx文件 <body> <form id="form1" runat="server"> <div> <!-- GridView控件绑定数据源,并且自定义列 --> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"> <Columns> <asp:BoundField DataField="title" HeaderText="图书编号" /> <asp:BoundField DataField="email" HeaderText="邮箱" /> <asp:BoundField DataField="context" HeaderText="内容" /> </Columns> </asp:GridView> </div> </form> </body> // .aspx.cs文件 protected void Page_Load(object sender, EventArgs e){ SqlConnection sqlConnection = new SqlConnection("Server=DEITIVOD;Database=db_LibraryMS;User Id=sa;pwd=admin"); SqlDataAdapter sqlDataAdapter = new SqlDataAdapter("select * from leaveword;", sqlConnection); DataSet dataSet = new DataSet(); sqlDataAdapter.Fill(dataSet); GridView1.DataSource = dataSet; // 指定数据集 GridView1.DataBind(); // 执行数据绑定 }
效果如下,左边是直接指定数据源时的表格,右边是对列自定义的表格:
3.2.4. 使用GridView控件分页显示数据
使用GridView控件分页显示数据主要用到了以下两个属性和一个事件:
AllowPaging属性,用来决定是否启用分页功能
PageSize属性,设置分页时每页显示几条记录,默认是12条
PageIndexChanging事件,用来响应用户的页面切换指令
下图的GridView属性说明了该GridView开启了分页功能,每页是展示3条记录
下面的代码,在开启分页功能的基础上重写了PageIndexChanging事件,实现了GridView的分页功能:
// .aspx文件 <body> <form id="form1" runat="server"> <div> <!-- GridView控件绑定数据源,并且使用分页功能 --> <asp:GridView ID="GridView1" runat="server" AllowPaging="True" OnPageIndexChanging="GridView1_PageIndexChanging" PageSize="3"> </asp:GridView> </div> </form> </body> // .aspx.cs文件 protected void Page_Load(object sender, EventArgs e){ SqlConnection sqlConnection = new SqlConnection("Server=DEITIVOD;Database=db_LibraryMS;User Id=sa;pwd=admin"); SqlDataAdapter sqlDataAdapter = new SqlDataAdapter("select * from leaveword;", sqlConnection); DataSet dataSet = new DataSet(); sqlDataAdapter.Fill(dataSet); GridView1.DataSource = dataSet; // 指定数据集 GridView1.DataBind(); // 执行数据绑定 } protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e){ // 设置当前页为新页 GridView1.PageIndex = e.NewPageIndex; // 绑定新页数据 GridView1.DataBind(); }
执行结果如下:
3.2.5. 选中、编辑和删除GridView数据项
3.3. DataList 控件
3.3.1. DataList 模板
DataList控件是一个常用的数据绑定控件,可以称之为迭代控件,该控件能够以某种设定好的模板格式循环显示多条数据,这种模板格式是可以根据需要进行自定义的,比较于GridView控件,虽然GridView控件功能非常强大,但它始终只能以表格的形式显示数据,而使用DataList控件则灵活性非常强,其本身就是一个富有弹性的控件。
DataList中一共有以下几种模板:
模板 | 说明 |
ItemTemplate | 为项提供内容 |
AlternatingltemTemplate | 为交替项提供内容,是ItemTemplate的扩展 |
SelectedltemTemplate | 为当前选定项提供内容 |
EditltemTemplate | 为当前编辑项提供内容 |
HeaderTemplate | 为页眉提供内容 |
FooterTemplate | 为页脚提供内容 |
3.3.2. 分页显示DataList控件中的数据
DataList本身不具有分页功能,为了实现分页功能,需要借助PagedDataSource类
3.4. ListView控件
3.4.1. ListView控件概述
ListView控件用于显示数据,它提供了编辑、删除、插入、分页与排序等功能,ListView大部分的属性方法和事件与GridView和DataList一致,可以理解为GridView控件与DataList控件的融合,它具有GridView控件编辑数据的功能,同时又具有DataList控件灵活布局的功能。
3.4.2. ListView控件的模板
ListView控件有非常多的模板,其中最常用的有六个
模板 | 说明 |
ItemTemplate | 为项提供内容 |
GroupTemplate | 为组提供内容,它包含一个占位符对象,可以由其他模板中的内容进行替换 |
SelectedltemTemplate | 为当前选定项提供内容 |
EditltemTemplate | 为当前编辑项提供内容 |
InsertltemTemplate | 为插入项提供内容 |
EmptyDataTemplate | 在数据源未返回数据时提供内容 |
3.4.3. 使用ListView控件对数据进行显示、分页和排序
使用ListView控件对数据进行分页需要用到标签,这是一个用于分页的控件。排序需要用到CommandName属性,令其值为sort,指定要进行排序操作,然后再指定CommandArgument属性,令其值为要排序的列。
使用ListView控件显示数据只需配置数据源即可,而无需写任何一行操作数据库的代码,效果如下: