Linq 組合查詢與分頁查詢
阿新 • • 發佈:2017-06-05
rom sys first birt linq 首頁 open() exec ems
後臺:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class ZS : System.Web.UI.Page
{
Hashtable ht = new Hashtable();
int pcou = 2;
protected void Page_Load(object sender, EventArgs e)
{
Button1.Click += Button1_Click;
Button2.Click += Button2_Click;
//////////////////////////////////////////////////////////////////////
if (!IsPostBack)
{
Repeater1.DataSource = new StusData().SelectTJ(TSQL(1), ht);
Repeater1.DataBind();
//最大頁數綁定
PageAll.Text = PageAAll().ToString();
////下拉菜單綁定
for (int x = 1; x <= PageAAll(); x++)
{
ListItem li = new ListItem(x.ToString(), x.ToString());
DropDownPage.Items.Add(li);
}
}
PageJump.Click += PageJump_Click;
PageNext.Click += PageNext_Click;
PageLast.Click += PageLast_Click;
PageOld.Click += PageOld_Click;
PageFirst.Click += PageFirst_Click;
Select.Click += Select_Click;
}
//拼寫TSQL語句查詢所有信息*****
public string TSQL(int zz)
{
ht.Clear();
int cc = 0;//記錄下一條查詢數據
string sql = "select top " + pcou + "* from Stus ";
string t1 = "";
//1.將條件查詢的語句拼完
if (Name.Text.Trim().Length > 0)
{
cc++;
t1 += " where Name like @a ";
ht.Add("@a", "%" + Name.Text.Trim() + "%");
}
if (Sex.SelectedValue != "")
{
if (cc == 0)
{
t1 += " where " + Sex.SelectedValue;
cc++;
}
else
{
t1 += " and " + Sex.SelectedValue;
}
}
if (Score.Text.Trim().Length > 0)
{
if (cc == 0)
{
t1 += " where Score " + ScorePD.SelectedValue + " @b ";
ht.Add("@b", Score.Text.Trim());
cc++;
}
else
{
t1 += " and Score " + ScorePD.SelectedValue + " @b ";
ht.Add("@b", Score.Text.Trim());
}
}
//2.將分頁的語句拼完
if (cc == 0)
{
sql += " where Ids not in (select top " + (pcou * (zz - 1)) + " Ids from Stus " + t1 + " )";
}
else
{ sql += t1 + " and Ids not in (select top " + (pcou * (zz - 1)) + " Ids from Stus " + t1 + " )"; }
return sql;
}
//拼寫tsql1語句獲取共有多少條信息*****
public string tsql1()
{
ht.Clear();
int cc = 0;//記錄下一條查詢數據
string sql = "select count(*) from Stus";
string t1 = "";
//1.將條件查詢的語句拼完
//string aa = " select *from Stus ";
if (Name.Text.Trim().Length > 0)
{
cc++;
t1 += " where Name like @a ";
ht.Add("@a", "%" + Name.Text.Trim() + "%");
}
if (Sex.SelectedValue != "")
{
if (cc == 0)
{
t1 += " where " + Sex.SelectedValue;
cc++;
}
else
{
t1 += " and " + Sex.SelectedValue;
}
}
if (Score.Text.Trim().Length > 0)
{
if (cc == 0)
{
t1 += " where Score " + ScorePD.SelectedValue + " @b ";
ht.Add("@b", Score.Text.Trim());
}
else
{
t1 += " and Score " + ScorePD.SelectedValue + " @b ";
ht.Add("@b", Score.Text.Trim());
}
}
sql += t1;
return sql;
}
//獲取最大頁數
public int PageAAll()
{
int cc = 0;
Decimal bb = Convert.ToDecimal(new StusData().SelectPage(tsql1(), ht));
cc = Convert.ToInt32(Math.Ceiling(bb / pcou));
return cc;
}
// 查詢按鈕點擊事件
void Select_Click(object sender, EventArgs e)
{
DropDownPage.Items.Clear();
Repeater1.DataSource = new StusData().SelectTJ(TSQL(1), ht);
Repeater1.DataBind();
//最大頁數綁定
PageAll.Text = PageAAll().ToString();
//下拉菜單綁定
for (int x = 1; x <= PageAAll(); x++)
{
ListItem li = new ListItem(x.ToString(), x.ToString());
DropDownPage.Items.Add(li);
}
}
//首頁****
void PageFirst_Click(object sender, EventArgs e)
{
Repeater1.DataSource = new StusData().SelectTJ(TSQL(1), ht);
Repeater1.DataBind();
//當前頁數變換
PageNow.Text = "1";
DropDownPage.SelectedValue = "1";
}
//上一頁****
void PageOld_Click(object sender, EventArgs e)
{
//獲取上一頁的頁數
int n = Convert.ToInt32(PageNow.Text) - 1;
//如果頁數小於最小頁數
if (n < 1)
{
return;
}
//綁定數據
Repeater1.DataSource = new StusData().SelectTJ(TSQL(n), ht);
Repeater1.DataBind();
//當前頁數變換
PageNow.Text = n.ToString();
DropDownPage.SelectedValue = n.ToString();
}
//尾頁****
void PageLast_Click(object sender, EventArgs e)
{
//綁定數據
Repeater1.DataSource = new StusData().SelectTJ(TSQL(PageAAll()), ht);
Repeater1.DataBind();
//當前頁數變換
PageNow.Text = PageAAll().ToString();
DropDownPage.SelectedValue = PageAAll().ToString();
}
//下一頁*****
void PageNext_Click(object sender, EventArgs e)
{
//獲取下一頁的頁數
int n = Convert.ToInt32(PageNow.Text) + 1;
//如果頁數超過了最大頁數
if (n > PageAAll())
{
return;
}
//綁定數據
Repeater1.DataSource = new StusData().SelectTJ(TSQL(n), ht);
Repeater1.DataBind();
//當前頁數變換
PageNow.Text = n.ToString();
DropDownPage.SelectedValue = n.ToString();
}
//跳轉按鈕****
void PageJump_Click(object sender, EventArgs e)
{
int a = Convert.ToInt32(DropDownPage.SelectedValue);
//綁定數據
Repeater1.DataSource = new StusData().SelectTJ(TSQL(a), ht);
Repeater1.DataBind();
//當前頁數變換
PageNow.Text = a.ToString();
}
void Button2_Click(object sender, EventArgs e)
{
Response.Cookies["username"].Expires = DateTime.Now.AddDays(-10);
Response.Redirect("DL.aspx");
}
void Button1_Click(object sender, EventArgs e)
{
//Response.Redirect("TJXS.aspx");
Label2.Text = TSQL(1);
}
}
HTML
<span>當前第</span><asp:Label ID="PageNow" runat="server" Text="1"></asp:Label><span></span>頁</span>
<span>共</span><asp:Label ID="PageAll" runat="server" Text="1"></asp:Label><span>頁</span>
<asp:DropDownList ID="DropDownPage" runat="server"></asp:DropDownList>
<asp:Button ID="PageJump" runat="server" Text="跳轉" />
<asp:Button ID="PageFirst" runat="server" Text="首頁" />
<asp:Button ID="PageOld" runat="server" Text="上一頁" />
<asp:Button ID="PageNext" runat="server" Text="下一頁" />
<asp:Button ID="PageLast" runat="server" Text="尾頁" />
<span>查詢篩選: 學生姓名:</span>
<asp:TextBox ID="Name" runat="server"></asp:TextBox>
<span>學生性別:</span>
<asp:DropDownList ID="Sex" runat="server">
<asp:ListItem Text="男 和 女" Value=""></asp:ListItem>
<asp:ListItem Text="男" Value="Sex = 1 "></asp:ListItem>
<asp:ListItem Text="女" Value="Sex = 0 "></asp:ListItem>
</asp:DropDownList>
<span>學生成績:</span>
<asp:DropDownList ID="ScorePD" runat="server">
<asp:ListItem Text="大於等於" Value=">="></asp:ListItem>
<asp:ListItem Text="小於" Value="<"></asp:ListItem>
<asp:ListItem Text="等於" Value="="></asp:ListItem>
</asp:DropDownList>
<asp:TextBox ID="Score" runat="server"></asp:TextBox>
<asp:Button ID="Select" runat="server" Text="查詢" />
<div class="d1" style="font-size: 30px;">
學生數據展示
</div>
<div>
<%--數據展示--%>
<table class="d2">
<tr>
<td>編號</td>
<td>姓名</td>
<td>性別</td>
<td>民族</td>
<td>年齡</td>
<td>生日</td>
<td>班級</td>
<td>分數</td>
<td>學生信息操作</td>
</tr>
<asp:Repeater ID="Repeater1" runat="server">
<%--循環展示的數據--%>
<ItemTemplate>
<tr style="">
<td><%#Eval("Ids") %></td>
<td><%#Eval("Name") %></td>
<td><%#Eval("Sexx") %></td>
<td><%#Eval("Nationn") %></td>
<td><%#Eval("Age") %></td>
<td><%#Eval("Bir") %></td>
<td><%#Eval("Classs") %></td>
<td><%#Eval("Score") %></td>
<td>
<input type="button" value="修改" oo="<%#Eval("Ids")%>" class="btn1" />
<a href="SCXS.aspx?i=<%#Eval("Ids") %>">
<input type="button" value="刪除" onclick="return confirm(‘是否要刪除 <%#Eval("Name")%> ?‘);" /></a>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
數據訪問類:
//分頁組合查詢統一方法***
public List<Stus> SelectTJ(string s1, Hashtable ht)
{
List<Stus> ss = new List<Stus>();
cmd.CommandText = s1;
foreach (string hh in ht.Keys)
{
cmd.Parameters.AddWithValue(hh, ht[hh]);
}
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
ss = new List<Stus>();
while (dr.Read())
{
Stus s = new Stus();
s.Ids = Convert.ToInt32(dr["Ids"]);
s.Name = dr["Name"].ToString();
s.Sex = Convert.ToBoolean(dr["Sex"]);
s.Birthday = Convert.ToDateTime(dr["Birthday"]);
s.Nation = dr["Nation"].ToString();
s.Class = dr["Class"].ToString();
s.Score = Convert.ToInt32(dr["Score"]);
ss.Add(s);
}
}
conn.Close();
return ss;
}
//分頁組合查詢查詢信息條數****
public int SelectPage(string s, Hashtable ht)
{
int a = 0;
cmd.CommandText = s;
foreach (string hh in ht.Keys)
{
cmd.Parameters.AddWithValue(hh, ht[hh]);
}
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
dr.Read();
a = Convert.ToInt32(dr[0]);
}
conn.Close();
return a;
}
Linq 組合查詢與分頁查詢