本文主要是介绍【ITOO考试系统】——级联查询,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近在做考试系统的模板,学到了如何写级联查询,这里简单的介绍一下,如果有人在这方面有困扰,可以稍稍借
鉴一下~
什么是级联查询
大家做过机房收费系统应该知道,有一个组合查询,级联查询类似组合查询,不过有些微的区别。
组合查询 : A + B + C => answer.
级联查询: A => B => answer.
如何实现级联查询
实现级联查询的逻辑其实很简单,触发A的同时加载B,触发B的同时得到answer。看看我正在写的考试系统模板
的级联查询界面:
所以在写级联查询的时候,需要先加载开考的学院,然后根据学院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考试系统】——级联查询的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!