条件查询

                                                                              条件查询

1.每个系统开发无非是为了人们方便去管理数据和使用数据了,使用数据当然少不了就是数据的查询了。如果连最基本的数据查询功能那就不行了,总不能还是一页页也去翻一页一页去查是吧,要是几十万条数据呢要查到何时何月呢,多浪费时间,查询、查询当然不是靠说的,不是你说什么查询就查询什么,计算机是不会听得懂的,查询当然是需要根据某个条件去查询的,条件查询就是已经存在有的数据中的某一个作为依据进行查询,举个列子吧好比如一个学生的信息有学院、年级、班级、学号、姓名。学院、年级、班级、学号、姓名这些就是查询的条件,比如我想知道某某学院的所有学生,我们只用“学院”作为条件就行了,就可以把该学院的所有学生信息出来了,如果还想知道到某学院下的某年级下的所有学生,只要在学院的基础加多一个年级作为条件,这样就可以把这个学院的该年级下的学生都查询出来了,往下面查的同理可得,甚至可以查到个人信息。

2.html部分

<label class="col-form-label mr-2" for="searchAcademeID">学院</label>

<select id="searchAcademeID" class="form-control form-control-sm mr-3 col-sm-2 col-md-1"></select>

我们看下一页面这里学院后面放了一个select这样的一个标签,现在的select标签里面是没有选项的,我们以前的用是在select标签里面放一个option这样的标签作为下拉列表中的选项,那么现在我们怎么把下拉框的数据放进来呢,首先就是查询出数据库面的有哪些学院,然后再把查出来的学院放到select里面去

3.下拉框数据的绑定

我们加载出来的就是这样的一个页面

进到页面之后只有学院这个下拉框是有数据的,后面的下拉框是没有的,当我们选定学院后年级下拉框的数据就出来了,不同的学院有不同的年级,首先要确认是学院,同理班级就由学院和年级决定了,在这里我们怎么把学院的内容查出来呢?在这用到createSelect这样一个已经封装好方法,这个方法createSelect(selectId, url, value)有三个参数,第一个参数是需要查询的ID,第二个参数是请求的路径,第三个是显示的值.

页面代码写好了到控制器写查询的方法了,学院的就是简单一句代码就ok

//学院下拉框数据绑定
createSelect("searchAcademeID", "selectAcademe");

在写这个方法之前我们还要创建一个实体类

public class SelectVo

    {

        public int id { get; set; }// 选中值

        public string text { get; set; }// 显示值

}

为什么要要创建这样一个类呢?因为我们看到的是文字(text:显示值),而计算机是读不了这些文字的,而是通过读到ID获取到这一行数据显示出来的(id:选中值),把查询到的id都放在id里面,查到名称都放到text里面

public ActionResult selectAcademe()

 { //查询数据

   List<SelectVo> listAcademe = (from tbAcademe in myModels.SYS_Academe

                               select new SelectVo

                             {

                               id = tbAcademe.AcademeID,//选中值

                               text = tbAcademe.AcademeName//显示值

}).ToList();

//List<SelectVo> listAcademe2 = myModels.SYS_Academe.Select(m => new SelectVo { id = m.AcademeID, text = m.AcademeName }).ToList();

 //拼接"请选择"项

listAcademe = Common.Tools.SetSelectJson(listAcademe);

return Json(listAcademe, JsonRequestBehavior.AllowGet);

}

使用Linq语句对这个学院表进行查询出来,再进进行赋值,最后把这数据返回到页面。这里还一个问题,页面运行之后,下拉框哪里会默认一个值,把默认的那个数据查询显示了出来,假如我想一进入到页面加载是全部数据而不是默认的那个数据,有些时候我们是不需要根据这个默认值进行查询的,这个时候我们可以加一个请选择项给它,让它的的id为零这样子进入到页面先显示是请选择这个选项了,实际上查询出来的就是所有的信息了,这个操作要在数据返回页面之前我们要进行一个拼接“请选择”这个选项,就是在已经查出数据的基础上在前面加上这一项。

在拼接前要添加这样一个类

public static List<SelectVo> SetSelectJson(List<SelectVo> select)

  {

            //创建列表对象

            List<SelectVo> list = new List<SelectVo>();

            //创建实体对象

            SelectVo selectVo = new SelectVo

            {

                id = 0,

                text = "---请选择---"

            };

            //将实体对象添加到对象列表

            list.Add(selectVo);

            //将数据集添加到对象列表

            list.AddRange(select);

            return list;

        }

下一级就是年级了,上下级存在关系,由上一级数据发生改变时,触发下一级下拉框数据的绑定,这里用了一个change改变事件,首先要获取到选中学院ID,然后同样是上面方法绑定年级下拉框,查询方法差不多就是加多一个参数和一个条件,传一个参数到控制器作为条件的匹配,查询到的数据再返回到页面来,最后清空一下班级下拉框

            //学院下拉框数据改变,触发年级下拉框数据绑定

            $("#searchAcademeID").change(function () {

                //获取选中的学院ID

                var academeId = $("#searchAcademeID").val();

                //绑定年级下拉框

                createSelect("searchGradeID", "selectGrade?AcademeID=" + academeId);

                //清除班级下拉框

                $("#searchClassID").empty();

            });

同理班级下拉框也是同样使用相同的方法绑定数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值