1. 程式人生 > >Linq 組合查詢與分頁查詢

Linq 組合查詢與分頁查詢

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 組合查詢與分頁查詢