LinQ的组合+分页
前台代码:
名称:<asp:TextBox ID="Textname" runat="server"></asp:TextBox>
油耗:<asp:TextBox ID="Textoil" runat="server"></asp:TextBox>
马力:<asp:TextBox ID="Textpowers" runat="server"></asp:TextBox>
<asp:Button ID="btncha" runat="server" Text="查询" /><br /><br />
当前第[<asp:Label ID="lb_now" runat="server" Text=""></asp:Label>]页,共[<asp:Label ID="lb_all" runat="server" Text=""></asp:Label>]页
<asp:LinkButton ID="btnfirst" runat="server">首页</asp:LinkButton>
<asp:LinkButton ID="btn_prev" runat="server">上一页</asp:LinkButton> <asp:LinkButton ID="btn_next" runat="server">下一页</asp:LinkButton>
<asp:LinkButton ID="btnlast" runat="server">末页</asp:LinkButton>
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true"></asp:DropDownList>
CarDA:数据访问类,
mydbDataContext con = new mydbDataContext();
public List<Car> Select()//查询表所有数据
{
return con.Car.ToList();
}
public List<Car> Selectname(string n)//查名称的方法
{
return con.Car.Where(r => r.Name.Contains(n)).ToList();
}
public List<Car> Selectoil(decimal o)//查油耗的方法
{
return con.Car.Where(r => r.Oil == o).ToList();
}
public List<Car> Selectpow(int p)//查马力的方法
{
return con.Car.Where(r => r.Powers == p).ToList();
} public List<Car> Fenye(List<Car> list, int s, int t)//查分页的方法s是几条数据,t是几页
{
List<Car> li = con.Car.ToList();//查到所有数据
return li.Intersect(list).Skip(s * t).Take(t).ToList();
}
后台代码:
int pagenum = ;//每页显示三页
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Repeater1.DataSource = new CarDA().Select().Take(pagenum);
Repeater1.DataBind();
lb_now.Text = "";//定义打开显示第一页
lb_all.Text = Math.Ceiling(Convert.ToDouble(new CarDA().Select().Count) / pagenum).ToString();//上限 最大页数 总条数÷一页显示的条数= 总共的页数 for (int i = ; i <= Convert.ToInt32(lb_all.Text); i++)
{
ListItem li = new ListItem(i.ToString(), i.ToString());
DropDownList1.Items.Add(li);//跳转
}
} btncha.Click += btncha_Click;//查询 btn_prev.Click += btn_prev_Click;//上一页
btn_next.Click += btn_next_Click;//下一页
btnfirst.Click += btnfirst_Click;//首页
btnlast.Click += btnlast_Click;//末页
DropDownList1.SelectedIndexChanged += DropDownList1_SelectedIndexChanged;//跳转
} void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{//跳转 int n = Convert.ToInt32(DropDownList1.SelectedItem.Text);//获取索引最小的选定向 lb_now.Text = n.ToString();//当前页数
CarDA ca = new CarDA();
List<Car> list = ca.Select(); if (Textname.Text != "")
{
List<Car> list1 = ca.Selectname(Textname.Text);
list = list.Intersect(list1).ToList();
}
if (Textoil.Text != "")
{
List<Car> list1 = ca.Selectoil(Convert.ToDecimal(Textoil.Text));
list = list.Intersect(list1).ToList();
}
if (Textpowers.Text != "")
{
List<Car> list1 = ca.Selectpow(Convert.ToInt32(Textpowers.Text));
list = list.Intersect(list1).ToList();
} lb_all.Text = Math.Ceiling(Convert.ToDouble(list.Count) / pagenum).ToString();
Repeater1.DataSource = ca.Fenye(list, (Convert.ToInt32(lb_now.Text) - ), pagenum);
Repeater1.DataBind();
} void btnlast_Click(object sender, EventArgs e)
{//末页
CarDA ca = new CarDA();
List<Car> list = ca.Select(); if (Textname.Text != "")
{
List<Car> list1 = ca.Selectname(Textname.Text);
list = list.Intersect(list1).ToList();
}
if (Textoil.Text != "")
{
List<Car> list1 = ca.Selectoil(Convert.ToDecimal(Textoil.Text));
list = list.Intersect(list1).ToList();
}
if (Textpowers.Text != "")
{
List<Car> list1 = ca.Selectpow(Convert.ToInt32(Textpowers.Text));
list = list.Intersect(list1).ToList();
}
lb_now.Text = Math.Ceiling(Convert.ToDouble(list.Count) / pagenum).ToString();
lb_all.Text = Math.Ceiling(Convert.ToDouble(list.Count) / pagenum).ToString();
Repeater1.DataSource = ca.Fenye(list, (Convert.ToInt32(lb_now.Text) - ), pagenum);
Repeater1.DataBind();
} void btnfirst_Click(object sender, EventArgs e)
{//首页
lb_now.Text = "";
CarDA ca = new CarDA();
List<Car> list = ca.Select(); if (Textname.Text != "")
{
List<Car> list1 = ca.Selectname(Textname.Text);
list = list.Intersect(list1).ToList();
}
if (Textoil.Text != "")
{
List<Car> list1 = ca.Selectoil(Convert.ToDecimal(Textoil.Text));
list = list.Intersect(list1).ToList();
}
if (Textpowers.Text != "")
{
List<Car> list1 = ca.Selectpow(Convert.ToInt32(Textpowers.Text));
list = list.Intersect(list1).ToList();
} lb_all.Text = Math.Ceiling(Convert.ToDouble(list.Count) / pagenum).ToString();
Repeater1.DataSource = ca.Fenye(list, (Convert.ToInt32(lb_now.Text) - ), pagenum);
Repeater1.DataBind(); } void btn_next_Click(object sender, EventArgs e)
{//下一页 int a =Convert.ToInt32( lb_now.Text)+;每点一下加1 CarDA ca = new CarDA();
List<Car> list = ca.Select(); if (Textname.Text != "")
{
List<Car> list1 = ca.Selectname(Textname.Text);
list = list.Intersect(list1).ToList();
}
if (Textoil.Text != "")
{
List<Car> list1 = ca.Selectoil(Convert.ToDecimal(Textoil.Text));
list = list.Intersect(list1).ToList();
}
if (Textpowers.Text != "")
{
List<Car> list1 = ca.Selectpow(Convert.ToInt32(Textpowers.Text));
list = list.Intersect(list1).ToList();
}
lb_now.Text = a.ToString();//让现在的页数显示+1之后的数据
lb_all.Text = Math.Ceiling(Convert.ToDouble(list.Count) / pagenum).ToString();
Repeater1.DataSource = ca.Fenye(list, (Convert.ToInt32(lb_now.Text) - ), pagenum);
Repeater1.DataBind(); } void btn_prev_Click(object sender, EventArgs e)
{//上一页
if (Convert.ToInt32(lb_now.Text) > )判断是否可以点上一页
{
int nownum = Convert.ToInt32(lb_now.Text) - ;
CarDA ca = new CarDA();
List<Car> list = ca.Select(); if (Textname.Text != "")
{
List<Car> list1 = ca.Selectname(Textname.Text);
list = list.Intersect(list1).ToList();
}
if (Textoil.Text != "")
{
List<Car> list1 = ca.Selectoil(Convert.ToDecimal(Textoil.Text));
list = list.Intersect(list1).ToList();
}
if (Textpowers.Text != "")
{
List<Car> list1 = ca.Selectpow(Convert.ToInt32(Textpowers.Text));
list = list.Intersect(list1).ToList();
} Repeater1.DataSource = ca.Fenye(list, (nownum - ), pagenum);
Repeater1.DataBind();
lb_now.Text = nownum.ToString();
}
} void btncha_Click(object sender, EventArgs e)
{//查询
lb_now.Text = "";
int nownum = Convert.ToInt32(lb_now.Text);
CarDA ca = new CarDA();
List<Car> list = ca.Select(); if (Textname.Text != "")
{
List<Car> list1 = ca.Selectname(Textname.Text);
list = list.Intersect(list1).ToList();
}
if (Textoil.Text != "")
{
List<Car> list1 = ca.Selectoil(Convert.ToDecimal(Textoil.Text));
list = list.Intersect(list1).ToList();
}
if (Textpowers.Text != "")
{
List<Car> list1 = ca.Selectpow(Convert.ToInt32(Textpowers.Text));
list = list.Intersect(list1).ToList();
}
lb_all.Text = Math.Ceiling(Convert.ToDouble(list.Count) / pagenum).ToString();
DropDownList1.Items.Clear();
for (int i = ; i <= Convert.ToInt32(lb_all.Text); i++)
{
ListItem li = new ListItem(i.ToString(), i.ToString());
DropDownList1.Items.Add(li);
}
Repeater1.DataSource = ca.Fenye(list, (nownum - ), pagenum);
Repeater1.DataBind();
}
LinQ的组合+分页的更多相关文章
- Linq 动态组合排序(Lambda)
最近有个项目需要做一个排班的功能,需要对排班的数据按不同的规则进行排序:因为排序规则是动态变化的,所以不太适合放到数据库中(临时表)中处理: 所以考虑使用Linq的排序方式(按不同的条件判断条件组合排 ...
- linq to sql 分页技术
昨天在用LINQ写分页的时候碰到一个很奇怪的问题:翻页的时候,有的数据会莫名其妙地消失,查了半个多小时才发现问题所在,其实是一个很细节的地方. 数据表如下: LINQ分页的实现是: var artic ...
- asp.net LINQ实现数据分页
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- linq 动态组合条件
http://www.albahari.com/nutshell/predicatebuilder.aspx Dynamically Composing Expression Predicates S ...
- 使用 Parallel LINQ 进行数据分页
a) 第一种[耗时11~18s],这种查询方式并不是很优化,但是目前也没有想到更好的方式,除了创建一张中间表,是不是可以使用[全文索引]? SELECT * FROM ( SELECT ROW_ ...
- Spring Data JPA 复杂/多条件组合分页查询
推荐视频: http://www.icoolxue.com/album/show/358 public Map<String, Object> getWeeklyBySearch(fina ...
- repeater+aspnetpager 组合分页
页面代码 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="TF_Product. ...
- mybatis动态条件组合分页查询
一.动态条件处理 需要使用mybatis的动态sql 1 <select id="selectItemByCondition" parameterType="com ...
- Entity Framework Linq 动态组合where条件
public static class PredicateExtensions { public static Expression<Func<T, bool>> True&l ...
随机推荐
- Eclipse下的Maven
本文转载自:http://www.cnblogs.com/zlslch/p/5882567.html 当我们无法从本地仓库找到需要的构件的时候,就会从远程仓库下载构件至本地仓库.一般地,对于每个人来说 ...
- React JSX语法说明
原文:http://my.oschina.net/leogao0816/blog/379487 什么是JSX? 在用React写组件的时候,通常会用到JSX语法,粗看上去,像是在Javascript代 ...
- logcat--目录
代码实现获取log日志和logcat使用方法:http://www.apkbus.com/android-128263-1-1.html logcat命令使用方法和查看android系统日志缓冲区内容 ...
- 移动web开发,12个触摸及多点触摸事件常用Js插件
如今移动互联网已经占据了主流地位,越来越多的开发者开始从桌面转向移动平台.与桌面开发不同的是,在移动领域中,不同的操作系统.大量不同屏幕尺寸的移动设备.触摸手势操作等,这都给开发者带来了一定的难度和挑 ...
- 炉石ZZ操作 [20161224]
昨天吃完晚饭,开了一盘炉石.选的龙牧,遇到对面马克扎尔战士. 中途,我场上3个较大随从,他突然先拍下一个铜须,菊花一紧,然后果然拍下了大工匠(之前用龙人侦察者看到他牌库有这张牌),逗比的一幕开始了,首 ...
- PMIC RTC 寄存器
RTC_PDN1 bit 0 - 3 : Android bits bit 4 - 5 : Recovery bits (0x10: factory data reset) bit 6 : Bypas ...
- oracle rac自动生成awr
cat awr.sql ######EXEC P_AWR_REPORT('201604251000', '201604251100', 'D_OUTPUT', '', FALSE); FALSE为ra ...
- Linux 命令与文件的搜寻
平时会偶尔忘记一些命令或者文件,下面的这些命令能够帮我们快速的找到命令或者文件 1. 命令的搜寻 命令:which 功能:在PATH配置的目录下搜寻命令 用法:which [-a] [command] ...
- Windows Linux 之间rsync同步CODE文件
Windows Linux 之间rsync同步CODE文件 一.环境Windows:OS:Microsoft Windows Web Server 2008 SP1IP:192.168.88.197 ...
- SQL Server performance tips
Refer to: http://harriyott.com/2006/01/sql-server-performance-tips A colleague of mine has been look ...