故障管理系统--select两级联动查询

写故障管理系统时,根据主类-平台进行故障搜索,需要用到select两级联动查询

我前端技术纯菜鸟,请教了个水平高的同事才搞定,所以记录下来,以免以后再忘了

前端html

<form id="tab" class="form-inline" role="form" action=‘/search/‘ method=‘GET‘ style="float:right;margin-top:-48px;margin-right:0px;">
        <!--<div class="panel-heading">-->
        <div class="form-group">
        <select class="form-control" name="Program" id="se_program">
        <option value="test_program">请选择主类</option>
        {% for val  in search %}
            <option value="{{ val }}" {% if val == query %}selected{% endif %}>{{ val }}</option>
        {% endfor %}
        </select>
        <select class="form-control" name="PlatForm" id="se_platform">
        <option value="test_platform">请选择平台</option>
        </select>
        </div>
         <button class="btn btn-primary" type="submit"><i class="fa fa-save"></i>search</button>
        <!--</div>-->
        </form>
<script type="application/javascript">
    $(document).ready(function() {
      $(‘#se_program‘).change(function () {
          se_program = $(‘#se_program‘).val();
          data = {se_program: se_program};
          $.ajax({
              url:"/liandong/",
              data:data,
              type:‘post‘,
                  success: function(platform){
                  $("#se_platform").empty();
                  $("#se_platform").append("<option value=‘test_platform‘>"+"请选择平台"+"</option>");
                  $.each(platform,function(i){
                  $("#se_platform").append("<option "+"value=\""+platform[i]+"\">"+platform[i]+"</option>")
                     })
              }
          })
      })})
</script>

django后端view

def search(request,page):
    """
    搜索view,接收前端传来的主类名,匹配数据库获得数据,返回给前端,自定义分页
    """
    check_Program=request.GET[‘Program‘]
    check_PlatForm=request.GET[‘PlatForm‘]
    check_Program=check_Program.encode("utf-8")
    check_PlatForm=check_PlatForm.encode("utf-8")
    if check_Program == ‘test_program‘:
        return HttpResponseRedirect(‘/index/‘)
    if check_Program != ‘test_program‘ and check_PlatForm==‘test_platform‘:        
        ch_result = FaultReports.objects.filter(Program = check_Program)
        plat=FaultReports.objects.values_list(‘PlatForm‘,flat=True).filter(Program = check_Program)
        plat=set(plat)
        if ch_result:
            islogin=False
            page=gb001.try_int(page, 1)
            totalitems=FaultReports.objects.filter(Program = check_Program).count()
            pageInofobj=html.PageInfo(page,totalitems)
            pager=html.Search_Program_page(‘/search/‘,page,pageInofobj.TotalPage(),check_Program)
            all_data=FaultReports.objects.filter(Program = check_Program).order_by("-id")[pageInofobj.From():pageInofobj.To()]
            data=FaultReports.objects.values_list("Program",flat=True)
            data=set(data)
            try:
                islogin=request.session[‘islogin‘]
            except Exception,e:
                pass
            if islogin:
                name =request.session[‘username‘]
                return render_to_response(‘search.html‘,{‘login_user‘:name,‘pager‘:pager,‘result‘:all_data,‘search‘:data,‘query‘:check_Program,‘plat‘:plat})
            else:
                return HttpResponseRedirect(‘/login/‘)
    else:
        ch_result = FaultReports.objects.filter(Program = check_Program,PlatForm=check_PlatForm)
        plat=FaultReports.objects.values_list(‘PlatForm‘,flat=True).filter(Program = check_Program)
        plat=set(plat)
        print plat
        if ch_result:
            islogin=False
            page=gb001.try_int(page, 1)
            totalitems=FaultReports.objects.filter(Program = check_Program,PlatForm=check_PlatForm).count()
            pageInofobj=html.PageInfo(page,totalitems)
            pager=html.Search_Program_page(‘/search/‘,page,pageInofobj.TotalPage(),check_Program,check_PlatForm)
            all_data=FaultReports.objects.filter(Program = check_Program,PlatForm=check_PlatForm).order_by("-id")[pageInofobj.From():pageInofobj.To()]
            data=FaultReports.objects.values_list("Program",flat=True)
            data=set(data)
            try:
                islogin=request.session[‘islogin‘]
            except Exception,e:
                pass
            if islogin:
                name =request.session[‘username‘]
                return render_to_response(‘search.html‘,{‘login_user‘:name,‘pager‘:pager,‘result‘:all_data,‘search‘:data,‘query‘:check_Program,‘query_platform‘:check_PlatForm,‘plat‘:plat})
            else:
                return HttpResponseRedirect(‘/login/‘)
时间: 2024-12-10 15:38:36

故障管理系统--select两级联动查询的相关文章

Combobox下拉框两级联动

下拉框的两级联动是我们开发中经常遇到一种情况.比如一个学生管理系统中,根据年级.科目及姓名查询学生考试成绩,年级和科目都是硬盘中的有限数据(数据库)而学生则可以有用户手动指定,这时在数据库中有年级和科目两张表,每门科目都对应一个年级,所以我们可以用两个下拉框(Combobox)来存储年级和科目信息来供用户选择.界面如下: 这时如果我们将科目对应的下拉框直接绑定科目表时,用户选择一个年级后还要从所有科目中进行选择就会降低系统的友好性,甚至可能出现没有任何意义的查询语句.我们可以先绑定年级下拉框的数

DropDownList绑定数据表实现两级联动示例

这篇文章主要介绍了DropDownList绑定数据表实现两级联动具体实现,需要的朋友可以参考下 场景一:平时我们在DropDownList控件下添加下拉选项时,都会使用它的Item.Add方法,直接在代码下添加.如果我们想添加或修改下拉选项,则必须去修改源代码.如果几个DropDownList控件的下拉选项相同,我们则需要重复添加好多次,后期的维护工作很不方便. 场景二:我们在12306网站买票时,肯定遇到过这么一种情景:我们需要先选定目的地的省份,选完省份后在城市选框中会自动加载该省份的城市,

JS练习:两级联动

代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>两级联动</title> <script> //准备数据 var provinces = [ ["深圳市", "东莞市", "惠州市", "广州市"], ["长沙市", &quo

NET:异步刷新,dropdownlist两级联动, Triggers

PS::我在论坛发了个求助帖子,居然没啥人回..好纠结啊... http://bbs.csdn.net/topics/390809330 目的:三个dropdownlist A  B   C,     要求实现  A  联动 C,   B 联动 C 涉及:ScriptManager .  UpdatePanel ,  Triggers,   AsyncPostBackTrigger ScriptManager 对象集:启用局部呈现 <asp:ScriptManager ID="Script

DropDownList控件:两级联动--【Asp.Net】

最近学习Asp.Net,发现很多控件都很有意思,例如:Canlender,AdRotator等.以前只知道有这样的页面效果,但是对这些控件了解并不多.不怕不知道,就怕不知道. DropDownList,两级联动,做这个demo的时候,让我又爱又恨. 一开始的时候,自己就草草的建立了一个Fresh的数据库,建立了一个Student表如下图所示: 在页面上面放了两个DropDownList,两个SqlDataSource.如下图所示: 下面就需要通过SqlDataSource设置数据源,让DropD

踩iviewui中Select 选择器两级联动,重置查询条件时第二级数据无法清除的坑

小颖公司最近做的项目用的vue+iviewui+axios,在做项目的过程中,遇到一个问题: 二级联动的下拉框,第一个下拉框一直都有值,第二个下拉框是在选择了第一个下拉框之后采取调用ajax获取其值,但当点击重置按钮时,所有的查询条件都要置空,所以这时第二个下拉框的 option 的值也应是空的,但事实是虽然小颖在点击重置按钮时把第二个下拉框的option绑定的值置空了,但它还是能获取到数据,最后定位到问题:        获取第二个下拉框的值是给第一个下拉框绑定的 on-change 中获取的

Jquery实现两级联动

最后结果如下: 关键代码如下: <select name="customerCondition['credibilityBegin']" id="credibilityBegin" class="ui_select01" style="width:90px" onchange="changeCredibility();"> <option value="" select

Thinkphp 两级联动

<!-- 前端代码部分--><div class="pop-movegroup" id="salesmanBox"> <dl> <dt>选择推广账号:</dt> <dd> <!-- 一级联动的数据先查询遍历出来--> <select name="salesman" id="salesman"> <volist name=&qu

JS 省市两级联动(不带地区版本)

基于网上找的一个版本改造,因为项目需求不需要地区只要省.市,所以做了改版,两个input上直接取出了数据 <html> <head> <script src="app/js/jquery-1.11.2.min.js"></script> <SCRIPT LANGUAGE="JavaScript"> var Items=new Array(); function add(id,iArray) { Items[