【ITOO考试系统】——级联查询

        最近在做考试系统的模板,学到了如何写级联查询,这里简单的介绍一下,如果有人在这方面有困扰,可以稍稍借

鉴一下~


       什么是级联查询


       大家做过机房收费系统应该知道,有一个组合查询,级联查询类似组合查询,不过有些微的区别。

       组合查询 : A + B + C => answer.

       级联查询: A => B => answer.


       如何实现级联查询


       实现级联查询的逻辑其实很简单,触发A的同时加载B,触发B的同时得到answer。看看我正在写的考试系统模板

的级联查询界面:


【ITOO考试系统】——级联查询_第1张图片

         所以在写级联查询的时候,需要先加载开考的学院,然后根据学院ID,加载课程,并通过课程和题型的对应表

tr_coursemapname查询到课程和题型的映射名,显示到界面上。整个这套级联查询的逻辑就是这样的,所以下边就

是代码部分了!

        加载学院信息:

        html代码:

<select id="academy" class="easyui-combobox" name="state" style="width: 150px; margin-right: 100px;"@* 级联查询 *@
         url="/BuildTemplate/academy";
         valueField="id" textField="value" required="true" editable="false"
         >
</select>
   

        controller代码:

public string academy()
        { 
            //测试所用的假数据
            List<Combox> comboxlist = new List<Combox>();
            Combox combox = new Combox();
            combox.id="123456";
            combox.value="经济学院";

            Combox combox1= new Combox();
            combox1.id="1456";
            combox1.value = "生科学院";

            Combox combox2 = new Combox();
            combox2.id="12346";
            combox2.value="数信学院";

            Combox combox3 = new Combox();
            combox3.id="12345";
            combox3.value="体育学院";


            comboxlist.Add(combox1);
            comboxlist.Add(combox2);
            comboxlist.Add(combox3);

            JavaScriptSerializer servializer = new JavaScriptSerializer();
            return servializer.Serialize(comboxlist);
        }
       

       这样就完成加载考试学院了,然后就是触发这个combobox,然后加载课程信息

       html代码:

@* 2.根据学院信息加载课程信息 *@
        课程:
     <select name="state" id="Course" class="easyui-combobox" style="width: 150px;"
         @* 级联查询 *@
         url="/BuildTemplate/test1";
         valueField="id" textField="value" required="true" editable="false"
         >
     </select>

       controller代码:

//获取课程信息
public string Course(string val)
        {
            String value = val;

            List<Combox> comboxlist = new List<Combox>();
            Combox combox = new Combox();
            combox.id = "1";
            combox.value = "数学";

            Combox combox1 = new Combox();
            combox1.id = "2";
            combox1.value = "汉语言文学";

            Combox combox2 = new Combox();
            combox2.id = "3";
            combox2.value = "大学英语";

            Combox combox3 = new Combox();
            combox3.id = "4";
            combox3.value = "大学体育";


            comboxlist.Add(combox1);
            comboxlist.Add(combox2);
            comboxlist.Add(combox3);

            JavaScriptSerializer servializer = new JavaScriptSerializer();
            return servializer.Serialize(comboxlist);
        }

               然后最重要的就是javascript了:

<script type="text/javascript">

    $(function () {
        var val="";
        var id = "";
        $('#academy').combobox({       //触发学院的select事件
            onSelect: function () { 
                val = $('#academy').combobox('getValue');   //获取学院的id                
                $('#Course').combobox({
                    valueField: 'id',
                    textField: 'value',
                    editable: false,
                    url: '/BuildTemplate/Course?val=' + val,
                });
            }
        });
        $('#Course').combobox({   //触发课程的select事件
            onSelect: function () {
                id = $('#Course').combobox('getText');                
                $.ajax({
                    type: "post",
                    url: '/ConfigurationQue/QueryExamCourseName',
                    async: false,
                    data: { "courseid": id },
                    dataType: 'json',
                    success: function (data) {
                        try {
                            var coursename = data[0].ExamCourseName;
                            $("#mapname").val(coursename);
                        }
                        catch (Exception) {
                            alert("无映射名记录,请输入映射名!");
                            $("#mapname").val("");
                            $("#mapname").focus();
                        }
                    }
                });
            }
        })
    })
</script>
              然后就是通过课程ID加载映射名啦!

        controller代码:

public JsonResult mapname(String id)
        { 
            String value = id;
            JsonResult js = new JsonResult();
            js.Data = value;
            return js;
        }


       这样整个级联查询就OK了!看看效果!

【ITOO考试系统】——级联查询_第2张图片


【ITOO考试系统】——级联查询_第3张图片

【ITOO考试系统】——级联查询_第4张图片

        当当当当!!!肿么样!是不是棒棒哒?!


你可能感兴趣的:(【ITOO考试系统】——级联查询)