数据查询与展示:DataList
DataList控件可用于创建模板化的列表数据,可以显示诸如一行中有多列的内容,可以用任何重复结构中的数据。
使用DataList控件显示数据
1、添加DataList控件(数据)——DataList任务——单击编辑模板——在项模板的ItemTempalte中添加Label控件——在Lable任务中——单击编辑DataBindings——在Lable DateBindings对话框中为Text绑定数据——首先选中字段绑定——在字段绑定下拉框中选择需要的字段——然后在选择自定义绑定进行代码表达式修改对要显示的外键字段对象进行修改来显示相应的属性——单击确定——单击结束模板编辑——在分隔符模板的SeparatorTemplate中添加分隔控件——结束模板编辑
2、数据绑定
(1)数据源控件绑定
在 ObjectDataSource 任务——单击配置数据源——单击下一步——在定义数据方法中选择Select选项中的方法——单击完成(2)手动绑定数据(在后置代码中编写绑定方法,在首次加载页面时调用方法) this.DataList1.DataSource = 调用业务逻辑层的数据访问方法();
this.DataList1.DataBind();
分页的实现
1、存储过程分页
SQL语句:Select Top pageSzie * from 表名 where 条件 and id not in (Select Top PageSize * (CurrentPageIndex-1) id from 表 where 条件 order by 排序条件) order by 排序条件
2、使用分页类分页
步骤:(1)编写数据查询方法(查询所有的方法)指定PagedDataSource实例对象的数据源(2)分别设置允许分页、页大小、当前页的属性(3)指定数据显示控件的数据源为该实例对象,并绑定
示例
using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;
using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using PracticeMyBookShopBLL;
public partial class datalistBook : System.Web.UI.Page
{
//分页属性
private int Pater {
get{ return (int)ViewState["Page"]; }
set{ ViewState["Page"] = value; } }
//首次加载
protected void Page_Load(object sender, EventArgs e) {
if (!IsPostBack) {
//首次加载时设置当前页
ViewState["Page"] = 1;
//首次加载时调用方法
Databind(); } }
//分页数据绑定
private void Databind() {
//创建分类
PagedDataSource pagedDataSource = new PagedDataSource();
//绑定数据
pagedDataSource.DataSource = BookManager.GetHotBook();
//设置是否自动分页功能
pagedDataSource.AllowPaging = true;
//设置每页记录数
pagedDataSource.PageSize = 5;
//设置当前页
pagedDataSource.CurrentPageIndex = Pater;
lblCurrentPage.Text = "第" + (pagedDataSource.CurrentPageIndex + 1).ToString() + "页共" + pagedDataSource.PageCount.ToString() + "页";
SetEnable(pagedDataSource);
this.DataList1.DataSource = pagedDataSource;
DataList1.DataBind(); }
//上一页
protected void btnPrev_Click(object sender, EventArgs e) {
Pater--;
Databind(); }
//下一页
protected void btnNext_Click(object sender, EventArgs e){
Pater++;
Databind(); }
//根据条件设置是按钮否可用属性
private void SetEnable(PagedDataSource pagedDataSource) {
btnPrev.Enabled = true;
btnNext.Enabled = true;
if (pagedDataSource.IsFirstPage) {
btnPrev.Enabled = false; }
if (pagedDataSource.IsLastPage) {
btnNext.Enabled = false;
} } }
分页类的属性 | |
属性 | 说明 |
CurrentPageIndex | 当前页 |
PageCount | 总页数 |
Count | 总记录数 |
PageSize | 每页记录数 |
DataSource | 数据源 |
AllowPaging | 控件是否实现自动分页功能 |