关于EasyUI datagrid 无法在dialog中显示的问题分析及解决方案!

   最近项目中引用了easyUI,很大程度上的简化了开发过程,但是随之而来的也遇到一些问题,比如:标题中遇到的问题,去网上搜罗了下关于这个问题的解决方案,不是说的很复杂就是干脆文不对题,国外的使用这种稍微过时的UI框架就更少了,于是没办法就自己研究了,没有优化之前的图片大家参考下,数据都有就是无法显示,里面的内容全部不见了;网上很多人的解决方案是:新开一个页面并且使用iframe链接过来,但是我的项目需要在内容中还需要弹窗,因为使用iframe显示后,如果再弹窗就会被父窗口遮挡,这很显然无法满足我的需求;从右图可以看出所有数据表格都是存在的,也没有被隐藏,那到底是怎么回事呢?

 

      后来测试了很多,发现datagrid只要放在div中就会出现这种问题,而我们刚好要使用的dialog需要使用div,查阅了很多资料后发现,放在div中的datagrid会引起样式无法自适应,因此,这样话,我们就需要在datagrid的最后添加$("#控件Id名").datagrid("resize");即可,这句话是重新让表格自适应,测试一下,果然可以了,所以好东西拿上来给大家分享一下,技术的难点希望大家可以多多分享,而不是固步自封,让更多的开发者更好更快的开发。如下图:

 

转载于:https://www.cnblogs.com/BarryJames/p/9565447.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个EasyUI datagrid editor选择年的例子: HTML代码: ``` <table id="dg" title="用户列表" class="easyui-datagrid" style="width:700px;height:250px" url="get_users.php" toolbar="#toolbar" rownumbers="true" pagination="true" singleSelect="true" fitColumns="true" data-options="onDblClickRow:onDblClickRow"> <thead> <tr> <th field="id" width="50">ID</th> <th field="name" width="100">姓名</th> <th field="age" width="50">年龄</th> <th field="gender" width="50">性别</th> <th field="birthday" width="100" editor="{type:'datebox',options:{required:true}}">生日</th> </tr> </thead> </table> <div id="toolbar"> <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-add" plain="true" onclick="newUser()">添加用户</a> <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-edit" plain="true" onclick="editUser()">编辑用户</a> <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-remove" plain="true" onclick="destroyUser()">删除用户</a> </div> <div id="dlg" class="easyui-dialog" style="width:400px;height:280px;padding:10px 20px" closed="true" buttons="#dlg-buttons"> <div class="ftitle">用户信息</div> <form id="fm" method="post" novalidate> <div class="fitem"> <label>姓名:</label> <input name="name" class="easyui-validatebox" required="true"> </div> <div class="fitem"> <label>年龄:</label> <input name="age" class="easyui-numberbox" required="true"> </div> <div class="fitem"> <label>性别:</label> <select name="gender" class="easyui-combobox" required="true"> <option value="男">男</option> <option value="女">女</option> </select> </div> <div class="fitem"> <label>生日:</label> <input name="birthday" class="easyui-datebox" required="true"> </div> </form> </div> <div id="dlg-buttons"> <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-ok" onclick="saveUser()">保存</a> <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="$('#dlg').dialog('close')">取消</a> </div> ``` JavaScript代码: ``` $(function(){ $('#dg').datagrid({ onClickRow: function(index, row){ // 单击行事件 $('#dg').datagrid('beginEdit', index); // 开始编辑 } }); }); function newUser(){ $('#dlg').dialog('open').dialog('setTitle','添加用户'); $('#fm').form('clear'); } function editUser(){ var row = $('#dg').datagrid('getSelected'); if (row){ $('#dlg').dialog('open').dialog('setTitle','编辑用户'); $('#fm').form('load',row); } } function destroyUser(){ var row = $('#dg').datagrid('getSelected'); if (row){ $.messager.confirm('确认','您确定要删除此用户吗?',function(r){ if (r){ $.post('destroy_user.php',{id:row.id},function(result){ if (result.success){ $('#dg').datagrid('reload'); // 重新加载数据 } else { $.messager.show({ // 弹出消息框 title: 'Error', msg: result.errorMsg }); } },'json'); } }); } } function saveUser(){ $('#fm').form('submit',{ url: 'save_user.php', onSubmit: function(){ return $(this).form('validate'); }, success: function(result){ var result = eval('('+result+')'); if (result.success){ $('#dlg').dialog('close'); // 关闭对话框 $('#dg').datagrid('reload'); // 重新加载数据 } else { $.messager.show({ // 弹出消息框 title: 'Error', msg: result.errorMsg }); } } }); } ``` 在上面的代码,我们使用了EasyUI的datebox组件作为datagrid生日列的编辑器,这个组件可以选择年月日。 如果你只想选择年份,可以使用EasyUI的combobox组件,设置数据源为年份列表即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值