之前ITOO验收的时候,米老师看到考评系统上用到了右击表格弹出编辑、删除框的效果,要求所有系统都要实现。本想着之前留下有文档,应该会比较容易实现,可是文档里的看着就好费劲,实现起来就更难了。所以想着用一个比较简便的方法实现这个效果,后面听到李卫中用了一个比较简单的方法实现这个效果,看了一下他写的博客,其实我还有些不懂,把他叫过来给我讲讲。看到他调代码的过程,对于这个方法的实现才有些明白,但是后面在实现编辑功能的时候,只能弹出一个编辑框,而编辑框里应该加载有选择行的内容,可是我的代码能力太弱了,但是也没有想着自己去百度,就叫来我的小伙伴王朋波来给我调试,半个小时下来,总算是把编辑框弄好了,但是效果还是有些瑕疵。觉得还可以再完善完善,但是不能再叫他来帮我完善。直到敲手机端的时候遇到了同一个问题,才有了解决办法,到后面也算是达到了自己想要的效果了。
注意:“#Family”是表格名称,编写的时候需要改成和自己系统里的表格名称一致的命名。
<span style="font-size:18px;"><script type="text/javascript"> $("#Family").datagrid({ onRowContextMenu: function (e, rowIndex, rowData) { //右键时触发事件 //三个参数:e应该是对当前菜单的实例化,以便调用;rowIndex就是当前点击时所在行的索引;rowData当前行的数据 e.preventDefault(); //阻止浏览器捕获右键事件 $(this).datagrid("clearSelections"); //取消所有选中项 $(this).datagrid("selectRow", rowIndex); //根据索引选中该行 $('#mm').menu('show', { //显示右键菜单 left: e.pageX,//在鼠标点击处显示菜单 top: e.pageY }); var test = document.getElementById("index"); test.value = rowIndex; e.preventDefault(); //阻止浏览器自带的右键菜单弹出 } }); </script> </span>
注意:因为各系统功能不同,所以删除、修改的js代码段只需调用各系统本身的删除、修改的js代码段,这里的删除、修改的js代码只是新生系统里的一个例子,仅为参照。
<span style="font-size:18px;"><script type="text/javascript"> //获取表格中行的序号,获取行内的各个元素值,即行内单元格里的信息,点击右击弹出编辑删除框的编辑时,把选择行内的数据信息获取到编辑框中 function edit() { var index = document.getElementById("index").value; Modify(index); } //删除的js代码 function doDelete() { var rows = $('#Family').datagrid('getSelections'); //判断是否选择行 if (!rows || rows.length == 0) { $.messager.alert('提醒', '请至少要选择一行数据', 'Info'); return; } var strId; //循环ID,添加到idList中 $.each(rows, function (i, n) { if (i == 0) { strId = "ID=" + n.Id; } else { strId += "&ID=" + n.Id; } }); $.messager.confirm('确认', '您确认想要删除记录吗?', function (r) { if (r) { $.ajax({ type: "POST", //async:flase, url: "/StuFamEdu/DelFamily", data: strId, success: function () { $.messager.alert("提示!", "信息删除成功!"); $("#Family").datagrid("reload"); }, error: function () { $.messager.alert("警告!", "删除失败!"); } }); } }); } //家庭成员信息修改 function Modify(index) { $("#AddFamily").css("display", "block"); $("#AddFamily").dialog({ title: '修改家庭成员信息', width: 380, height: 350, iconCls: 'icon-remove', //弹出框图标 buttons: [{ text: '确定', iconCls: 'icon-ok', handler: function () { var name = escape($("#Name").val()); var relation = escape($("#Relation").val()); var age = $("#Age").val(); var politicalStatus = escape($("#PoliticalStatus").combobox('getText')); var telNum = $("#TelNum").val(); var workUnit = escape($("#WorkUnit").val()); var address = escape($("#Address").val()); var id = escape($("#IdentifyID").val()); if ($("#Name").val() == Name && $("#Relation").val() == Relation && age == Age && $('#PoliticalStatus').combobox('getText') == PoliticalStatus && telNum == TelNum && $("#WorkUnit").val() == WorkUnit && $("#Address").val() == Address) { $.messager.alert('提醒', '请至少要修改一条数据', 'Info'); return; } if ($("#Name").val() == "" || $("#Relation").val() == "" || telNum == "" || age == "") { $.messager.alert('提醒', '请至少要填写“姓名”,“关系” “年龄”和“电话号码”', 'Info'); return; } $.ajax({ type: "post", //表单提交类型 url: "/StuFamEdu/ModifyFamily?IdentityID=@ViewData["IdentityID"]" + "&Name=" + name + "&Relation=" + relation + "&Age=" + age + "&PoliticalStatus=" + politicalStatus + "&TelNum=" + telNum + "&WorkUnit=" + workUnit + "&Address=" + address + "&id=" + id + "&t=" + new Date().getTime(), //表单提交目标 data: null, //表单数据 success: function () { $('#Family').datagrid('reload'); $('#AddFamily').window('close'); } }); } }, { text: '取消', iconCls: 'icon-cancel', handler: function () { $('#AddFamily').window('close'); } }] }); var Name = $('#Family').datagrid("getRows")[index].Name; var Relation = $('#Family').datagrid("getRows")[index].RelationShip; var Age = $('#Family').datagrid("getRows")[index].Age; var PoliticalStatus = $('#Family').datagrid("getRows")[index].PoliticalStatus; var TelNum = $('#Family').datagrid("getRows")[index].TelNum; var WorkUnit = $('#Family').datagrid("getRows")[index].WorkUnit; var Address = $('#Family').datagrid("getRows")[index].Address; var IdentityID = $('#Family').datagrid("getRows")[index].Id; $("#Name").val(Name); $("#Relation").val(Relation); $("#Age").val(Age); $("#PoliticalStatus").combobox('setText', PoliticalStatus); $("#TelNum").val(TelNum); $("#WorkUnit").val(WorkUnit); $("#Address").val(Address); $("#IdentifyID").val(IdentityID); } </span>
这一段代码是对上面js代码段的调用,因为各系统的删除、编辑代码段的命名可能会不一样,需要注意一下id和onclick调用的名称是否和自己系统里的js代码段是否一致。
<span style="font-size:18px;"><div id="mm" class="easyui-menu" style="width: 120px;"> //mm为id标识,调用前面右击触发事件的js文件 <input id="index" type="text" value="" style="display: none;"/>//index为选中行的标识,获取行内信息, <div id ="mody" onclick="edit()" data-options="plain:true,iconCls:'icon-edit'">编辑</div>//mody为修改事件标识,edit()是前面的修改js事件 <div id ="delete" onclick="doDelete()" data-options="plain:true,iconCls:'icon-remove'">删除</div>//delete为删除事件标识,doDelete()是前面删除 js事件 </div> </span>
经过这个功能的实现,总算是明白了在ITOO系统里是如何调用JavaScript和CSS这些文件的,而这些文件的效果是如何在这个系统里实现的过程了。很感谢李卫中和王朋波这两位同学对我的帮助,不然的话,让我一个摸索,真的是够呛。