|
本帖最后由 GIN 于 2013-9-17 12:23 编辑
试用了一下,直到3.3,弹出框这块还是不好用。
放心修改,这个会在下一个版本中追加的,不用担心升级!
弹出框目前使用 <t:choose>标签。
主要存在问题:
- 在一个页面使用多个choose后,弹出后只能回填第一行的控件。
- “选择”按钮没有样式,很丑。
- 在一对多页面明细行里弹出没法用。
针对1.可以对t:choose进行改造,目前我自己重构了一份,修复了这个问题,原因是标签生成的方法重名。
另外标签增加了一个属性:inputTextname,把控件和弹出列表中的字段区分开来,支持多个字段与控件的回填。
以前的hiddenName,hiddenid 可以废弃掉不用了。
<input name="roleid1" name="roleid1" value="${id}" id="roleid1">
<input name="roleName1" class="inputxt" value="${roleName }" id="roleName1" readonly="readonly" datatype="*" />
<t:choose url="userController.do?roles" name="roleList" icon="icon-search" title="角色列表" inputTextname="roleid1,roleName1" textname="id,roleName" isclear="true"></t:choose>
inputTextname:要回填数据的控件id
textname:弹出列表的字段名
针对2.直接在<t:choose>的方法内icon属性改为icon-search即可。
<t:choose hiddenName="roleid" hiddenid="id" url="userController.do?roles" name="roleList" icon="icon-search" title="角色列表" textname="roleName" isclear="true"></t:choose>
效果:
针对3.在一对多的页面中的明细行弃用标签,改用js方式,我这里实现了一个通用的Js弹出方法,在crudtools.js中,覆盖到项目中,直接在界面里调用即可,不需要再引入。- /*
- 自定义url的弹出
- obj:要填充的控件,可以为多个,以逗号分隔
- name:列表中对应的字段,可以为多个,以逗号分隔(与obj要对应)
- url:弹出页面的Url
- */
- function popClick(obj,name,url) {
复制代码 在一对多弹出示例:(这里使用demo中的常用插件-一对多模型)
/WebRoot/webpage/jeecg/demo/test/jeecgOrderMain.jsp
改造:
function resetTrNum(tableId) {
$tbody = $("#"+tableId+"");
$tbody.find('>tr').each(function(i){
$(':input, select', this).each(function(){
var $this = $(this), name = $this.attr('name'), val = $this.val();
if(name!=null){
if (name.indexOf("#index#") >= 0){
$this.attr("name",name.replace('#index#',i));
}else{
var s = name.indexOf("[");
var e = name.indexOf("]");
var new_name = name.substring(s+1,e);
$this.attr("name",name.replace(new_name,i));
}
//给明细添加弹出框
name = $this.attr('name');
if(name.indexOf("jeecgOrderProductList") >= 0 && name.indexOf("gopProductName") >= 0){
$this.attr("class","searchbox-inputtext");
$this.unbind("click");
$this.bind("click",function(){popClick("jeecgOrderProductList\["+i+"\]\.gopProductName","roleName","userController.do?roles")});
}
}
});
});
}
/WebRoot/webpage/jeecg/demo/test/jeecgOrderProductList.jsp
$(document).ready(function(){ $(".datagrid-toolbar").parent().css("width","auto");
});
在这段代码之前加上下面这一句:
resetTrNum('add_jeecgOrderProduct_table');
效果:
最后我把包打出来,包括demo的修改,覆盖到项目中可以直接在demo的一对多模型查询效果。
jeecg-v3-simple.zip
(31.57 KB, 下载次数: 221)
|
|