1、组合查询
(1)数据访问类

//参数1:SQL语句 参数2:哈希表
public List<Users> chas(string s,Hashtable has)
{
List<Users> List = new List<Users>();
Users u = null;
com.CommandText = s;
com.Parameters.Clear();
foreach(string aa in has.Keys)
{
com.Parameters.Add(aa,has[aa]);
}
con.Open();
SqlDataReader dr = com.ExecuteReader();
if (dr.HasRows)
{
while (dr.Read())
{
u = new Users()
{
UserName = dr[].ToString(),
PassWord = dr[].ToString(),
NickName = dr[].ToString(),
Sex = Convert.ToBoolean(dr[]),
Birthday = Convert.ToDateTime(dr[]),
Phone = dr[].ToString(),
Email = dr[].ToString(),
Natoin = dr[].ToString(),
Area = dr[].ToString(),
};
List.Add(u);
}
}
con.Close();
return List;
}

(2)查找按钮事件

 Hashtable has = new Hashtable();//实例化哈希表,作用防攻击

//拼sql语句
string sqls = "select *from Users ";
if(TextBox1.Text!="")
{
sqls += " where UserName like @a";
has.Add("@a", "%" + TextBox1.Text.Trim() + "%");//将用户输入的内容放进哈希表,防攻击
count++;
}
if(Drop_nation.SelectedValue !="")
{
if(count !=)//如果上面有查询条件接and
{
sqls += " and Nation=@b"; }
else//如果上面没有查询条件接where
{
sqls += " WHERE Nation=@b"; count++;
}
string sss=Drop_nation.SelectedValue.ToString();
has.Add("@b",sss );
count++;
}

//Repeater数据绑定
      Repeater1.DataSource = new Usersdata().chas(sqls,has);
      Repeater1.DataBind();
      count = 0;

2、分页
前台

           当前第<asp:Label ID="Label1" runat="server" Text=""></asp:Label>页
共<asp:Label ID="Label2" runat="server" Text=""></asp:Label>页
<asp:LinkButton ID="LinkButton1" runat="server" >首页</asp:LinkButton>
<asp:LinkButton ID="LinkButton2" runat="server">上一页</asp:LinkButton>
<asp:LinkButton ID="LinkButton3" runat="server">下一页</asp:LinkButton>
<asp:LinkButton ID="LinkButton4" runat="server">末页</asp:LinkButton>
跳到
<asp:DropDownList ID="DropDownList1" AutoPostBack="true" runat="server"></asp:DropDownList>

后台

(1)数据访问类

//参数1:第几页 参数2:每页显示的个数
public List<Users> cha(int page,int pagecode)
{
List<Users> List = new List<Users>();
Users u = null;
//注意:sql语句
com.CommandText = "select top " + pagecode + " *FROM Users where UserName not in (select top " + ((page - ) * pagecode) + " UserName FROM Users)";
con.Open();
SqlDataReader dr = com.ExecuteReader();
if (dr.HasRows)
{
while (dr.Read())
{
u = new Users()
{
UserName = dr[].ToString(),
PassWord = dr[].ToString(),
NickName = dr[].ToString(),
Sex = Convert.ToBoolean(dr[]),
Birthday = Convert.ToDateTime(dr[]),
Phone = dr[].ToString(),
Email = dr[].ToString(),
Natoin = dr[].ToString(),
Area = dr[].ToString(),
};
List.Add(u);
}
}
con.Close();
return List;
}

(2)

//全局变量,每页显示的个数
int pagecode = ;
//跳到指定页数
void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
int a=Convert.ToInt32(DropDownList1.SelectedValue);//获取页数
//显示数据
Repeater1.DataSource = new Usersdata().cha(a, pagecode);
Repeater1.DataBind();
Label1.Text = a.ToString();//显示当前页
}
//下一页
void LinkButton3_Click(object sender, EventArgs e)
{
Label1.Text = (Convert.ToInt32(Label1.Text) + ).ToString();//显示下一页
if (Convert.ToInt32(Label1.Text) <= MAXPAGE(pagecode))//判断是否小于最大页
{
Repeater1.DataSource = new Usersdata().cha(Convert.ToInt32(Label1.Text), pagecode);
Repeater1.DataBind();
}
else
{
Label1.Text = MAXPAGE(pagecode).ToString();
return;
}
}
//上一页
void LinkButton2_Click(object sender, EventArgs e)
{
Label1.Text =(Convert.ToInt32(Label1.Text) - ).ToString();//显示上一页
if (Convert.ToInt32(Label1.Text)<=)//判断是否大于0页
{
Label1.Text = "";
return;
}
Repeater1.DataSource = new Usersdata().cha(Convert.ToInt32(Label1.Text), pagecode);
Repeater1.DataBind();
}
//末页
void LinkButton4_Click(object sender, EventArgs e)
{
Repeater1.DataSource = new Usersdata().cha(MAXPAGE(pagecode), pagecode);
Repeater1.DataBind();
Label1.Text = MAXPAGE(pagecode).ToString();
}
//首页
void LinkButton1_Click(object sender, EventArgs e)
{
Repeater1.DataSource = new Usersdata().cha(, pagecode);
Repeater1.DataBind();
Label1.Text = "";
} //最大页数
private static int MAXPAGE(int pagecode)
{
double ye = (new Usersdata().cha().Count) / (pagecode *1.0);
int maxye = Convert.ToInt32(Math.Ceiling(ye));
return maxye;
}

3 组合查询和分页结合使用
先查询后分页(拼SQL语句)

数据访问类:同上面的组合查询

        string sqls = "select top " + pagecode + " *from Users ";//带分页和查询条件的SQL语句
string sql2 = "select *from Users";//带查询条件的SQL的语句
string sqls1 = "";//查询条件sql语句
if (TextBox1.Text != "")
{
sqls += " where UserName like @a";
sqls1 += " where UserName like @a";
has.Add("@a", "%" + TextBox1.Text.Trim() + "%");
count++;
}
if (Drop_nation.SelectedValue != "")
{
if (count != )
{
sqls += " and Nation=@b";
sqls1 += " and Nation=@b";
}
else
{
sqls += " WHERE Nation=@b";
sqls1 += " WHERE Nation=@b";
count++;
}
string sss = Drop_nation.SelectedValue.ToString();
has.Add("@b", sss);
count++;
} if (count > )
{
sqls += " and UserName not in (select top " + ((Convert.ToInt32(Label1.Text) - ) * pagecode) + " UserName from Users" + sqls1 + ")";
}
else
{
sqls += " where UserName not in (select top " + ((Convert.ToInt32(Label1.Text) - ) * pagecode) + " UserName from Users)";
}
//用label记录sql语句并隐藏,当上一页、下一页等可以从label中取出用

Label3.Text = sqls;
Label4.Text = sqls1;
Label5.Text = sql2 + sqls1;

//Repeater数据绑定
Repeater1.DataSource = new Usersdata().chas(Label3.Text, has);
Repeater1.DataBind();

webform组合查询和分页的更多相关文章

  1. Web 组合查询加 分页

    使用ADO.NET 数据访问技术制作web端组合查询加分页的功能关键在于查询SQL语句的拼接 以Car 表为例 每页显示3条数据 数据访问类使用查询方法,tsql 查询的连接字符串,查询的参数放到Ha ...

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

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

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

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

  4. WebForm组合查询

    封转类 using System; using System.Collections.Generic; using System.Linq; using System.Web; /// <sum ...

  5. LinQ 组合查询与分页

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

  6. LinkQ 组合查询与分页

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

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

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

  8. webform 组合查询

    界面: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx ...

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

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

随机推荐

  1. bootstrap-11

    下拉菜单(基本用法) 在使用Bootstrap框架的下拉菜单时,必须调用Bootstrap框架提供的bootstrap.js文件.当然,如果你使用的是未编译版本,在js文件夹下你能找到一个名为“dro ...

  2. Error:Execution failed for task ':app:transformClassesWithInstantRunForDebug'. > java.lang.ClassNotFoundException: io.realm.RealmObject

    这问题错误是在运行时出现的,A-Jiang大神有说明解决方法,大神网址:https://github.com/AndroidJiang/StockChart 如果是as2.0+,可能会出现instan ...

  3. PHP代码标识

    1. Echo语句(打印) <?php echo "想学习PHP么"; ?> 2. 计算表达式 <?php echo 12*3; ?> 3. 字符串 < ...

  4. Unity3D基础知识梳理

    这段时间在做Unity的项目,这差不多是我的第一次实战啊~然后公司来了实习的童鞋要学Unity,但是我一向不靠谱啊,所以只能帮他们稍微梳理下基础的东西了啊,唉~学长只能帮你们到这里了~顺便就把自己这两 ...

  5. 如何正确做 Web端压力测试?

    ​    ​一个完整的压力测试需要关注三个方面:如何正确产生压力.如何定位瓶颈.如何预估系统的承载能力. ​    ​(1) 如何产生压力:产生压力的方法有很多,通常可以写脚本产生压力机器人对服务器进 ...

  6. ecstore与淘宝sdk的autoload加载顺序问题

    ecstore使用spl_autoload_register实现类的自动加载,这个很大的方便我们不用每次都要手动的去include一些类和函数.不过这样会导致一些问题,比如说,有一些extension ...

  7. 使用集成的ADT bundle来搭建android开发环境

    android开发环境的搭建 本文使用集成的ADT bundle来搭建android开发环境,所谓bundle就是谷歌搭建好的一个eclipse+sdk集成环境.需要下载的软件列表如下: 1.ADT ...

  8. php接收到的json格式不标准,某个字段中的文本包含双引号的处理

    $str = '[{"Count":"1789"},{"裁判要旨段原文":"本瑶","案件类型":& ...

  9. 面对一个新的MCU,我再也不敢说第一步是点灯了

    折腾了几天AT91SAM3S,今天才算是把开发板上的3个LED点亮. 在点亮之前,起码看了百八十页的Datasheet,动用了N次百度. 各种时钟,看门狗,分散加载,中断向量,都得去整.这些都远远超过 ...

  10. Intellij Idea系列之导Jar包与编写单元测试(二)

     Intellij Idea系列之导Jar包与编写单元测试(二) 一.初衷 对于很多的初学者来说,Intellij如何导入jar包感到很迷惑,甚至在网上搜过相关文章之后还是云里雾里,本博客通过图文并茂 ...