Linq的分页与组合查询的配合使用
1.首先使用Linq连接数据库,并扩展属性
public partial class User
{
public string SexStr
{
get
{
string end = "<暂无>";
if (this._Sex != null)
{
end = Convert.ToBoolean(this._Sex) ? "男" : "女";
}
return end;
}
}
public bool SexStr1
{
get
{
bool end=false; if (this._Sex != null)
{
end = Convert.ToBoolean(this._Sex) ;
}
return end;
}
}
public string NationName
{
get
{
return this.Nation1.NationName;
}
}
public string BirStr
{
get
{
string end = "<暂无>";
if(this._Birthday!=null)
{
end = Convert.ToDateTime(this._Birthday).ToString("yyyy年MM月dd日");
}
return end;
}
}
public int Age
{
get
{
int end=;
if (this._Birthday != null)
{
int y = DateTime.Now.Year;
int a = Convert.ToDateTime(this._Birthday).Year;
end = y-a;
}
return end;
}
}
}
扩展属性
2.HTML代码
<form id="form1" runat="server">
<div id="select">
用户名:<asp:TextBox ID="TextBox1" runat="server" Width=""></asp:TextBox>
性别:<asp:TextBox ID="tb_sex" runat="server" Width="60px"></asp:TextBox> 
年龄:<asp:DropDownList ID="DropDownList3" runat="server">
<asp:ListItem Selected="True" Value="<=">>=</asp:ListItem>
<asp:ListItem Value=">="><=</asp:ListItem>
</asp:DropDownList><asp:TextBox ID="tb_age" runat="server" Width="60px"></asp:TextBox>
 <asp:Button ID="Button2" CssClass="Button" runat="server" Text="查询" />  <a href="Insert.aspx" target="_blank" class="link">添加</a></div> <asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate >
<table style="width: 100%; background-color: #4cff00; text-align: center;">
<tr style="color:#ff6a00;">
<td>用户名</td>
<td>密码</td>
<td>昵称</td>
<td>性别</td>
<td>生日</td>
<td>年龄</td>
<td>民族</td>
<td>操作</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr style="background-color:#0ff;" class="tr_item">
<td><%#Eval("UserName") %></td>
<td><%#Eval("PassWord") %></td>
<td><%#Eval("NickName") %></td>
<td><%#Eval("SexStr") %></td>
<td><%#Eval("Birthday","{0:yyyy年MM月dd日}") %></td>
<td><%#Eval("Age") %></td>
<td><%#Eval("NationName") %></td>
<td><a href="update.aspx?un=<%#Eval("UserName") %>" target="_blank" class="link">修改</a>
<a id="lian" href="delete.aspx?un=<%#Eval("UserName") %>" onclick="return del()" class="link">删除</a></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
//隐藏域放用户输入的多条件查询内容
<asp:HiddenField ID="HiddenField1" runat="server" />
<asp:HiddenField ID="HiddenField2" runat="server" />
<asp:HiddenField ID="HiddenField3" runat="server" />
<div id="aa">当前第 <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label> 页  共 <asp:Label ID="Label3" runat="server" Text="Label"></asp:Label> 页
<asp:Button ID="btn_first" runat="server" CssClass="ye" Text="首页" /> <asp:Button ID="btn_prev" runat="server" Text="上一页" CssClass="ye" /> <asp:Button ID="btn_next" runat="server" Text="下一页" CssClass="ye" /> <asp:Button ID="btn_end" runat="server" Text="末页" CssClass="ye"/>
<asp:DropDownList ID="DropDownList2" runat="server" AutoPostBack="True"></asp:DropDownList></div>
</form>
3、C#功能实现
private IEnumerable<global::User> sel(WebDataContext con)
{
var All = con.User.AsEnumerable();
if (HiddenField1.Value.Length > )
{
var namelist = con.User.Where(r => r.UserName.Contains(TextBox1.Text.Trim())); All = All.Intersect(namelist);
} if (HiddenField2.Value == "男" || HiddenField2.Value == "女")
{
var sexlist = con.User.Where(r => Convert.ToBoolean(r.Sex) == (tb_sex.Text.Trim() == "男" ? true : false)); All = All.Intersect(sexlist);
} if (HiddenField3.Value.Length > )
{
int nowyear = DateTime.Now.Year;
try
{
int age = Convert.ToInt32(tb_age.Text.Trim());
int g = nowyear - age;
DateTime d = Convert.ToDateTime(g.ToString() + "-1-1");
if (DropDownList3.SelectedValue == ">=")
{
var agelist = con.User.Where(r => Convert.ToDateTime(r.Birthday) >= d);
All = All.Intersect(agelist); }
else
{
DateTime dd = Convert.ToDateTime(g.ToString() + "-12-31");
var agelist = con.User.Where(r => Convert.ToDateTime(r.Birthday) <= dd);
All = All.Intersect(agelist); }
}
catch
{
}
}
return All;
}
查询方法
int Pagecount = ;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
using (WebDataContext con = new WebDataContext())
{
var All = sel(con);
Repeater1.DataSource = All.Take(Pagecount).ToList();
Repeater1.DataBind();
}
Label2.Text = "";//当前页
Label3.Text = MaxPageNumber().ToString();
for (int i = ; i <= MaxPageNumber();i++ )
{
DropDownList2.Items.Add(new ListItem(i.ToString(), i.ToString()));
}
} }
初加载
void Button2_Click(object sender, EventArgs e)//查询按钮
{
HiddenField1.Value = TextBox1.Text.Trim();
HiddenField2.Value = tb_sex.Text.Trim();
HiddenField3.Value = tb_age.Text.Trim();
using (WebDataContext con = new WebDataContext())
{
var All = sel(con);
Repeater1.DataSource = All.Take(Pagecount).ToList();
Repeater1.DataBind();
Label2.Text = "";
Label3.Text = MaxPageNumber().ToString();
DropDownList2.Items.Clear();
for (int i = ; i <= MaxPageNumber(); i++)
{
DropDownList2.Items.Add(new ListItem(i.ToString(), i.ToString()));
}
}
}
查询按钮点击
void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
{
using (WebDataContext con = new WebDataContext())
{
var All = sel(con);
Repeater1.DataSource = All.Skip(Pagecount * (Convert.ToInt32(DropDownList2.SelectedValue) - )).Take(Pagecount).ToList();
Repeater1.DataBind();
}
Label2.Text =DropDownList2.SelectedValue; }
快捷跳转
void btn_first_Click(object sender, EventArgs e)
{
using (WebDataContext con = new WebDataContext())
{
var All = sel(con);
Repeater1.DataSource = All.Take(Pagecount).ToList();
Repeater1.DataBind();
}
Label2.Text ="";
DropDownList2.SelectedValue = "";
}
首页
void btn_end_Click(object sender, EventArgs e)
{
using (WebDataContext con = new WebDataContext())
{
var All = sel(con);
Repeater1.DataSource = All.Skip(Pagecount * (Convert.ToInt32(Label3.Text) - )).Take(Pagecount).ToList();
Repeater1.DataBind();
}
Label2.Text = Label3.Text;
DropDownList2.SelectedValue = Label3.Text;
}
末页
void btn_prev_Click(object sender, EventArgs e)
{
int NowNumber = Convert.ToInt32(Label2.Text) -;
if (NowNumber <)
{
return;
}
using (WebDataContext con = new WebDataContext())
{
var All = sel(con);
Repeater1.DataSource = All.Skip(Pagecount * (NowNumber - )).Take(Pagecount).ToList();
Repeater1.DataBind();
} Label2.Text = NowNumber.ToString();
DropDownList2.SelectedValue = NowNumber.ToString();
}
上一页
void btn_next_Click(object sender, EventArgs e)
{
int NowNumber = Convert.ToInt32(Label2.Text) + ;
if (NowNumber > Convert.ToInt32(Label3.Text))
{
return;
}
using (WebDataContext con = new WebDataContext())
{
var All = sel(con);
Repeater1.DataSource = All.Skip(Pagecount * (NowNumber - )).Take(Pagecount).ToList();
Repeater1.DataBind();
} Label2.Text = NowNumber.ToString();
DropDownList2.SelectedValue = NowNumber.ToString(); }
下一页
public int MaxPageNumber()
{
using (WebDataContext con = new WebDataContext())
{
var All = sel(con);
double nu = All.ToList().Count / (Pagecount * 1.0);
int num = Convert.ToInt32(Math.Ceiling(nu));
return num;
}
}
计算总页数
Linq的分页与组合查询的配合使用的更多相关文章
- ajax分页与组合查询配合使用
使用纯HTML页与js.ajax.Linq实现分页与组合查询的配合使用 <body> <div id="top"><input type=" ...
- Webform(Linq高级查、分页、组合查询)
一.linq高级查 1.模糊查(包含) 1 public List<User> Select(string name) 2 { 3 return con.User.Where(r => ...
- LINQ 小项目【组合查询、分页】
使用 linq 在网页上对用户信息增删改,组合查询,分页显示 using System; using System.Collections.Generic; using System.Linq; us ...
- Webform(分页与组合查询配合使用)
1.封装实体类 2.写查询方法 //SubjectData类 public List<Subject> Select(string name) { List<Subject> ...
- webform 分页、组合查询综合使用
界面: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx ...
- Webform(分页、组合查询)
一.分页 1.写查询方法: public List<Student> Select(int PageCount, int PageNumber) {//PageCount为每页显示条数,P ...
- WebForm 分页与组合查询
1.封装实体类 2.写查询方法 //SubjectData类 public List<Subject> Select(string name) { List<Subject> ...
- WebForm 分页、组合查询--2017年1月5日
sql = "select * from Commodity"; hs = new Hashtable(); if (txt_name.Text.Trim() != "& ...
- linq分页组合查询
一.linq高级查 1.模糊查(字符串包含) 1 public List<User> Select(string name) 2 { 3 return con.User.Where(r = ...
随机推荐
- 【JQ+锚标记实现点击页面回到顶部】
前言:今天想写个页面常用到的[点击回到页面顶部或是首页的功能],生活和职场一样,总会有低谷的时候,这个时候咱也别怂.别怂.别怂,说三遍!那都不是事,工作没了,再找呗,就像我上周五,团队解散那天,我是笑 ...
- SQL之case when then用法
case具有两种格式.简单case函数和case搜索函数. 按 Ctrl+C 复制代码 这两种方式,可以实现相同的功能.简单case函数的写法相对比较简洁,但是和case搜索函数相比,功能方面会有些限 ...
- CSS系列:CSS中盒子之间的关系
1. 标准文档流 标准文档流是值在不使用其他的雨排列和定位相关的特殊CSS规则时,各种元素的排列规则. 1.1 块级元素(block level) 块级元素不会排在同一行中,总是以一个块的形式表现出来 ...
- MySql 及 MySql WorkBench使用大全
Mysql安装步骤 1. 下载MySQL Community Server 5.6.13 2. 解压MySQL压缩包 将以下载的MySQL压缩包解压到自定义目录下,我的解压目录是: "D:\ ...
- 前端学PHP之面向对象系列第四篇——关键字
× 目录 [1]public [2]protected [3]private[4]final[5]static[6]const[7]this[8]self[9]parent 前面的话 php实现面向对 ...
- 【原创】开源Math.NET基础数学类库使用(01)综合介绍
本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 前言 ...
- 近期博客内容的规划(关于Swift语言)
因为最近事情比较多,有一段时间没有发表博客了.前一段时间,利用空余时间翻译了一本关于Swif的书籍,过一段时间就会出版吧.通过翻译此书,英语水平没提高多少,不过Swift算是系统的学习了一下. 在翻译 ...
- 数据库SQL Service 2014中文版的安装和配置教程
一.我的电脑环境 1.windows8.1(64位) 2.之前电脑没有安装数据库的软件 二.装机之前准备(我这儿提供百度云保存和下载) 1.下载一个“Sql service 2014中文版” http ...
- (五)WebGIS中通过行列号来换算出多种瓦片的URL 之在线地图
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.前言 这篇文章里,我主要针对OGC标准中的WMS.WMTS以及Ar ...
- jQuery.grep()
什么是jQuery.grep()? jQuery.grep()是一个查找满足过滤函数的数组元素的函数.原始数组不受影响,返回值为数组. 用法介绍: 写法: jQuery.grep( array, fu ...