zoukankan      html  css  js  c++  java
  • LINQ 小项目【组合查询、分页】

    使用 linq 在网页上对用户信息增删改,组合查询,分页显示

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    /// <summary>
    /// Users 的摘要说明
    /// </summary>
    public partial class Users
    {
        public string SexStr
        {
            get
            {
                return Convert.ToBoolean(_Sex) ? "" : "";
            }
        }
    
        public string BirStr
        {
            get
            {
                return Convert.ToDateTime(_Birthday).ToString("yyyy年MM月dd日");
            }           //DateTime? 型,带问号,最好转换一下
        }
    
        public string Nationn
        {
            get
            {
                return Nation1.NationName;
            }
        } 
    }
    users--属性扩展
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
            <br /><br />
    
            用户名:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    
            性别:<asp:DropDownList ID="DropDownList2" runat="server">
                <asp:ListItem Value="null" Text=""></asp:ListItem>   <%--留下空白选项  全选--%>
                <asp:ListItem value="true" >男</asp:ListItem>
                <asp:ListItem value="false" >女</asp:ListItem>
               </asp:DropDownList>
    
            民族:<asp:DropDownList ID="DropDownList1" runat="server">
                <asp:ListItem  Value ="null" Text=""></asp:ListItem>      <%--留下空白选项  全选--%>   
               </asp:DropDownList>
    
            <asp:Button ID="Button1" runat="server" Text="查询" />
            <br /><br />
    
            <table style=" 100%; text-align: center; background-color: navy">
                <tr style="color: white">
                    <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="background-color: white">
                            <td><%#Eval("Ids") %></td>
                            <td><%#Eval("Username") %></td>
                            <td><%#Eval("Password") %></td>
                            <td><%#Eval("Nickname") %></td>
                            <td><%#Eval("SexStr") %></td>
                            <td><%#Eval("BirStr") %></td>
                            <td><%#Eval("Nationn") %></td>
                            <td>
                                设置
                                删除
                            </td>
                        </tr>
                    </ItemTemplate>
                </asp:Repeater>
    
                <tr>
                    <td  style="color: white" >
                        共有 <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 条记录
    
                    </td>
                </tr>
            </table>
    
    
            第[<asp:Label ID="Label2" runat="server" Text="1"></asp:Label>]页
            共[<asp:Label ID="Label3" runat="server" Text="Label"></asp:Label>]页
            <asp:Button ID="But_up" runat="server" Text="上一页" />
            <asp:Button ID="But_dow" runat="server" Text="下一页" />
           
    
    
        </form>
    </body>
    </html>
    前端
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    public partial class _Default : System.Web.UI.Page
    {
        int pagelist = 3;  //每页显示3条数据 
    
        protected void Page_Load(object sender, EventArgs e)
        {
            Button1.Click += Button1_Click;
            But_up.Click += But_up_Click;
            But_dow.Click += But_dow_Click;
    
            if (!IsPostBack)
            {
                using (Data0216_DataClassesDataContext con = new Data0216_DataClassesDataContext())
                {
                    //绑定民族
                    //DropDownList1.DataSource = con.Nation.ToList();
                    //DropDownList1.DataTextField = "NationName";
                    //DropDownList1.DataValueField = "NationCode";   用此法绑定数据无法留空白选项,
                    //DropDownList1.DataBind();                      空选项为此项全选
    
                    //绑定民族
                    foreach (Nation uu in con.Nation.ToList())
                    {
                        ListItem li = new ListItem();
                        li.Text = uu.NationName;
                        li.Value = uu.NationCode;
    
                        DropDownList1.Items.Add(li);
                    }
    
    
                    //绑定所有记录
                    List<Users> ulist = con.Users.ToList();
    
                    Repeater1.DataSource = ulist.Take(pagelist);
                    Repeater1.DataBind();
    
                    //共多少条记录
                    Label1.Text = ulist.Count.ToString();
    
                    //共多少页
                    Label3.Text = Convert.ToInt32(Math.Ceiling(Convert.ToDecimal(ulist.Count) / pagelist)).ToString();
    
    
                }
    
    
    
            }
    
        }
    
    
        //下一页
        void But_dow_Click(object sender, EventArgs e)
        {
            using (Data0216_DataClassesDataContext con = new Data0216_DataClassesDataContext())
            {
                //获取下一页页数
                int a = Convert.ToInt32(Label2.Text) +1;
    
                //调方法绑定数据
    
                Repeater1.DataSource = select(con).Skip((a-1)*pagelist).Take(pagelist);
                Repeater1.DataBind();
    
                //修改显示页数
    
                Label2.Text = a.ToString();
            }
    
        }
    
    
        //上一页
        void But_up_Click(object sender, EventArgs e)
        {
            using (Data0216_DataClassesDataContext con = new Data0216_DataClassesDataContext())
            {
                //获取下一页页数
                int a = Convert.ToInt32(Label2.Text) - 1;
    
                //调方法绑定数据
    
                Repeater1.DataSource = select(con).Skip((a-1)*pagelist).Take(pagelist);
                Repeater1.DataBind();
    
                //修改显示页数
    
                Label2.Text = a.ToString();
            }
        }
    
    
    
        //组合查询
        void Button1_Click(object sender, EventArgs e)
        {
            using (Data0216_DataClassesDataContext con = new Data0216_DataClassesDataContext())
            {
                Repeater1.DataSource = select(con).Take(pagelist); ;
                Repeater1.DataBind();
            }
        }
    
    
    
        //查询方法
        public List<Users> select(Data0216_DataClassesDataContext con)
        {
    
    
            List<Users> ulist = con.Users.ToList();
    
            //用户名
            if (TextBox1.Text.Trim().Length < 0)
            {
                ulist = ulist.Where(r => r.Username.Contains(TextBox1.Text.Trim())).ToList();
    
            }
    
            //性别
            if (DropDownList2.SelectedValue != "null")
            {
    
                ulist = ulist.Where(r => r.Sex == Convert.ToBoolean(DropDownList2.SelectedValue)).ToList();
            }
    
    
            //民族
            if (DropDownList1.SelectedValue != "null")
            {
    
    
                ulist = ulist.Where(r => r.Nation == DropDownList1.SelectedValue).ToList();
    
            }
    
            Label1.Text = ulist.Count.ToString();//共多少记录
    
            //共多少页
            Label3.Text = Convert.ToInt32(Math.Ceiling(Convert.ToDecimal(ulist.Count) / pagelist)).ToString();
    
            return ulist;
    
    
    
        }
    
    
    
    }
    后台代码

    -- 将组合查询写成一个方法,调用方法查询所有结果后,上下文对象关闭消失,

    由于本案例中在绑定数据时存在扩展属性,所以需要再开一次数据库,需要再创建一个上下文对象,

    所以在本案例中,查询方法需要传入一个上下文对象,在上一页、下一页中都要创建上下文对象,

    -------------------------------------------------------

  • 相关阅读:
    爬虫07-requests库cookie和session
    爬虫06-处理不信任的SSL证书
    爬虫05-requests库用法
    爬虫04-cookie
    网络爬虫-爬取拉勾网不成功,登录设置cookie
    爬虫03-简单使用代理
    爬虫02-简单伪装浏览器
    爬虫01-urllib常用函数
    01-matplotlib简单绘图
    21-pandas_apply和transform
  • 原文地址:https://www.cnblogs.com/Tanghongchang/p/6940087.html
Copyright © 2011-2022 走看看