使用ADO.NET 数据访问技术制作web端组合查询加分页的功能关键在于查询SQL语句的拼接

以Car 表为例 每页显示3条数据

数据访问类使用查询方法,tsql 查询的连接字符串,查询的参数放到Hashtable中

 public List<Car> Select(string tsql, Hashtable hh)
{
List<Car> list = new List<Car>();
cmd.CommandText = tsql;
cmd.Parameters.Clear();
foreach (string k in hh.Keys)
{
cmd.Parameters.Add(k, hh[k]);
}
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
while (dr.Read())
{
Car c = new Car();
c.Code = dr["Code"].ToString();
c.Name = dr["Name"].ToString();
c.Brand = dr["Brand"].ToString();
c.Oil = Convert.ToDecimal(dr["Oil"]);
c.Powers = Convert.ToInt32(dr["Powers"]);
c.Exhaust = Convert.ToInt16(dr["Exhaust"]);
c.Price = Convert.ToDecimal(dr["Price"]);
list.Add(c);
}
}
conn.Close();
return list;
}

后台代码封装查询连接字符的方法

/// <summary>
/// 拼接查询分页的SQL语句
/// </summary>
/// <param name="pagenumber">显示第几页</param>
/// <param name="isall">查最大页数的SQL语句</param>
/// <returns>查询sql语句的字符创</returns>
public string ReturnTsql(int pagenumber,bool isall)
{
hs.Clear();//清空哈希表数据
int count = ;//文本是否输内容
string Tsql = "select top " + pagecount + " *from Car";
if (isall)//true查所有拼接的语句
Tsql = "select *from Car";
string tj = "";
if (!string.IsNullOrEmpty(TextBox_name.Text.Trim()))//文本框有内容
{
Tsql += " where Name like @a";
tj += "where Name like @a";
hs.Add("@a", "%" + TextBox_name.Text.Trim() + "%");
count++;
}
if (!string.IsNullOrEmpty(TextBox_oil.Text.Trim()))
{
if (count == )
{
Tsql += " where Oil" + DropDownList_oil.SelectedValue + " @b";
tj += " where Oil" + DropDownList_oil.SelectedValue + " @b";
}
else
{
Tsql += " and Oil" + DropDownList_oil.SelectedValue + " @b";
tj += " and Oil" + DropDownList_oil.SelectedValue + " @b";
}
hs.Add("@b", TextBox_oil.Text.Trim());
count++;
}
if (!string.IsNullOrEmpty(TextBox_price.Text.Trim()))
{
if (count == )
{
Tsql += " where Price" + DropDownList_pri.SelectedValue + " @c";
tj += " where Price" + DropDownList_pri.SelectedValue + " @c";
}
else
{
Tsql += " and Price" + DropDownList_pri.SelectedValue + " @c";
tj += " and Price" + DropDownList_pri.SelectedValue + " @c";
}
hs.Add("@c", TextBox_price.Text.Trim());
count++;
}
//最终拼接的TSQL语句
if (count > )//文本框有输入
{
Tsql += " and Code not in(select top " + (pagecount * (pagenumber - )) + " Code from Car " + tj + ")";
}
else//没有输入
{
Tsql += " where Code not in(select top " + (pagecount * (pagenumber - )) + " Code from Car " + tj + ")";
}
return Tsql;
}
//查询最大页数
public int Maxpage(string tsql,Hashtable has)
{
List<Car> clist = new CarData().Select(tsql, has);
return Convert.ToInt32(Math.Ceiling(clist.Count / (pagecount * 1.0)));
}

功能代码 (查询 首页 下一页)

 int pagecount = ;//每页显示的数据
Hashtable hs = new Hashtable();//实例化一个全局的哈希表集合
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)//加载页面数据绑定
{
Repeater1.DataSource = new CarData().Select(ReturnTsql(,false), hs);
Repeater1.DataBind();
Label_now.Text = "";//当前页数
Label_max.Text = Maxpage(ReturnTsql(,true), hs).ToString();//最大页数
DropDownList_jump.Items.Clear();//跳转页下拉列表数据绑定
for (int i = ; i <= Maxpage(ReturnTsql(, true), hs); i++)
{ DropDownList_jump.Items.Add(new ListItem(i.ToString(),i.ToString()));
}
}
Button_sel.Click += Button_sel_Click;//查询
LinkButton_frist.Click += LinkButton_frist_Click;//首页
LinkButton_prve.Click += LinkButton_prve_Click;//上一页
LinkButton_next.Click += LinkButton_next_Click;// 下一页
LinkButton_last.Click += LinkButton_last_Click;//尾页
DropDownList_jump.SelectedIndexChanged += DropDownList_jump_SelectedIndexChanged;//跳转
}
void Button_sel_Click(object sender, EventArgs e)// 查询
{
Label_now.Text = "";
Label1.Text = ReturnTsql(, false);
Repeater1.DataSource = new CarData().Select(ReturnTsql(, false), hs);
Repeater1.DataBind();
Label_max.Text = Maxpage(ReturnTsql(, true), hs).ToString();
DropDownList_jump.Items.Clear();
for (int i = ; i <= Maxpage(ReturnTsql(, true), hs); i++)
{ DropDownList_jump.Items.Add(new ListItem(i.ToString(), i.ToString()));
}
}
void LinkButton_frist_Click(object sender, EventArgs e)//首页
{
Label_now.Text = "";
Repeater1.DataSource = new CarData().Select(ReturnTsql(, false), hs);
Repeater1.DataBind();
//上一页按钮不可用,下一页按钮可用
LinkButton_next.Enabled = true;
LinkButton_prve.Enabled = false;
}
    void LinkButton_next_Click(object sender, EventArgs e)//下一页
{
int pagenumber = Convert.ToInt32(Label_now.Text) + ;
Repeater1.DataSource = new CarData().Select(ReturnTsql(pagenumber, false), hs);
Repeater1.DataBind();
Label_now.Text = pagenumber.ToString();//改变当前页数的显示数据
if (pagenumber >= Maxpage(ReturnTsql(,true),hs))//大于最大页数下一页按钮不可用
{
LinkButton_next.Enabled = false;
}
LinkButton_prve.Enabled = true;
}

Web 组合查询加 分页的更多相关文章

  1. LINQ 小项目【组合查询、分页】

    使用 linq 在网页上对用户信息增删改,组合查询,分页显示 using System; using System.Collections.Generic; using System.Linq; us ...

  2. webform组合查询和分页

    1.组合查询(1)数据访问类 //参数1:SQL语句 参数2:哈希表public List<Users> chas(string s,Hashtable has) { List<Us ...

  3. Linq组合查询与分页组合查询结合

    1.组合查询 <div>姓名:<asp:TextBox ID="T1" runat="server"></asp:TextBox& ...

  4. LinQ 组合查询与分页

    1.以开头查 public List<Car> Select1(string a){ return con.Car.Where(r => r.Name.StartsWith(a)). ...

  5. spring boot jpa 多条件组合查询带分页的案例

    spring data jpa 是一个封装了hebernate的dao框架,用于单表操作特别的方便,当然也支持多表,只不过要写sql.对于单表操作,jpake可以通过各种api进行搞定,下面是一个对一 ...

  6. LinkQ 组合查询与分页

    1.以开头查 public List<Car> Select1(string a){ return con.Car.Where(r => r.Name.StartsWith(a)). ...

  7. LINQ 组合查询 和分页查询的使用

    前端代码 <%@ Page Language="C#" AutoEventWireup="true" Debug="true" Cod ...

  8. linq分页组合查询

    一.linq高级查 1.模糊查(字符串包含) 1 public List<User> Select(string name) 2 { 3 return con.User.Where(r = ...

  9. Webform(Linq高级查、分页、组合查询)

    一.linq高级查 1.模糊查(包含) 1 public List<User> Select(string name) 2 { 3 return con.User.Where(r => ...

随机推荐

  1. Mint linux 自定义上下文菜单实现ZIP压缩文件无乱码解压

    1. 前提条件 我的Mint Linux 是Thunar文件管理器(默认的). 2. 配置自定义动作 打开Thunar文件管理器,点击菜单“编辑”=>“配置自定义动作”.点击“+”添加一个新的. ...

  2. Win8换成Win7系统问题小结(修改主板BIOS方法)

    问题描述: 笔记本电脑W8系统使用不习惯,想要换成W7系统,但不管是用光盘安装亦或是用U盘安装,在设置系统启动项的时候,选择从光盘启动或从U盘启动,但是回车点了之后没反应. 下面就说说问题的原因及解决 ...

  3. Android开发-之环境的搭建

    关于Android开发可以使用的工具有eclipse和Android studio等,这两个工具都各有各的好处和不足.studio是谷歌推出的一款开发工具,而我们都知道Android就是谷歌公司的,所 ...

  4. 谈谈php里的DAO Model AR

    这次要谈的3个关键字:DAO.Model.AR,是我们在做web应用时常见的几个概念,也被称作设计模式(design pattern),先简单看看它们的全拼和中文: DAO:Data Access O ...

  5. Distributed4:SQL Server 分布式数据库性能测试

    我使用三台SQL Server 2012 搭建分布式数据库,将一年的1.4亿条数据大致均匀存储在这三台Server中,每台Server 存储4个月的数据,Physical Server的配置基本相同, ...

  6. Constraint6:更新外键约束(Foreign Key Constraint)的引用列

    在SQL Server中,表之间存在引用关系,引用关系通过创建外键约束(Foreign Key Constraint)实现.如果一个Table中的column被其他Table引用,那么该表是参考表,或 ...

  7. EasyUI DateTimeBox设置默认时间的注意点

  8. ios语音输入崩溃

    游戏中任何可以输入的地方,只要调用语音输入,必然会导致app崩溃,解决方法如下: ok, so essentially the gist of it is that siri wants gl con ...

  9. ASP.NET MVC5 网站开发实践(二) Member区域–管理列表、回复及删除

    本来想接着上次把这篇写完的,没想到后来工作的一些事落下了,放假了赶紧补上. 目录: ASP.NET MVC5 网站开发实践 - 概述 ASP.NET MVC5 网站开发实践(一) - 项目框架 ASP ...

  10. 为 Neutron 准备物理基础设施(II) - 每天5分钟玩转 OpenStack(76)

    本节将按照上一节的规划安装配置控制节点和计算节点. 控制节点 devstack-controller 步骤如下 安装 Ubuntu 14.04 此处省略 256 个字 配置网卡 编辑 /etc/net ...