惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LangChain Blog
C
Check Point Blog
月光博客
月光博客
Y
Y Combinator Blog
I
InfoQ
B
Blog RSS Feed
P
Proofpoint News Feed
腾讯CDC
博客园 - Franky
MyScale Blog
MyScale Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
V2EX
Hugging Face - Blog
Hugging Face - Blog
V
Visual Studio Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
云风的 BLOG
云风的 BLOG
罗磊的独立博客
B
Blog
人人都是产品经理
人人都是产品经理
Engineering at Meta
Engineering at Meta
MongoDB | Blog
MongoDB | Blog
Recent Announcements
Recent Announcements
美团技术团队
大猫的无限游戏
大猫的无限游戏

博客园 - 大浪淘沙

对Repository模式误用的反思和纠正 转载 SVN中trunk,branches,tags用法详解 operamasks-ui2.0 +MVC4.0+EF5.0实战 当EntityFramework遇上Json,引爆 循环引用 这颗雷 operamasks-ui2.0 +MVC4.0+EF5.0实战之四 部门管理功能及网格控件(datagrid) operamasks-ui2.0 +MVC4.0+EF5.0实战之三 业务功能区域及标签页控件(tab) operamasks-ui2.0 +MVC4.0+EF5.0实战之二 功能菜单及树形控件(Tree) operamasks-ui2.0 +MVC4.0+EF5.0实战之一 开篇及布局控件介绍 EasyUI1.3.1+MVC4.0+EF5.0 番外篇 关于前台框架的选择 EasyUI、DWZ、ligerui EasyUI1.3.1+MVC4.0+EF5.0实战之一 开篇及布局控件介绍 Asp.Net MVC4.0 官方教程拓展之一--为模型属性增加中文显示名称 Asp.Net MVC4.0 官方教程 入门指南之十--查看Detail和Delete方法 Asp.Net MVC4.0 官方教程 入门指南之九--为模型添加验证 Asp.Net MVC4.0 官方教程 入门指南之八--为Movie模型和库表添加字段 Asp.Net MVC4.0 官方教程 入门指南之七--增加搜索方法和视图 Asp.Net MVC4.0 官方教程 入门指南之六--查看Edit方法和Edit视图 Asp.Net MVC4.0 官方教程 入门指南之五--控制器访问模型数据 Asp.Net MVC4.0 官方教程 入门指南之四--添加一个模型 Asp.Net MVC4.0 官方教程 入门指南之三--添加一个视图 Asp.Net MVC4.0 官方教程 入门指南之二--添加一个控制器
easyui datagrid 诡异的无法显示问题
大浪淘沙 · 2015-10-20 · via 博客园 - 大浪淘沙

举个应用场景的例子来说明:

在采购单的编辑页面,上方为采购单自身的属性信息,下方使用tabs控件,加入两个tab页,分别为采购明细列表(DataGrid)和审核记录列表(DataGrid),即一个主业务实体携带两个子业务实体的情况,子业务实体中datagrid采用js代码请求后台数据加载并显示。

在采购单编辑页面初始化的时候,使用tabs控件的add方法,设置Content属性为嵌入iframe

function AddSubTab(name, url) {
    $("#subTabs").tabs('add', {
        title: name,
        content: '<iframe id="iframe" scrolling="auto" frameborder="0"  src=' + url + ' style="width:100%;height:96%;"></iframe>',
        closable: false,
        selected: true,
        cache: false
    });
}

实际情况如下: 第二个tab页正常加载显示,第一个tab页中的datagrid无法显示,其他内容正常,右键选择重新加载则能正常显示 去除其中任何一个tab页,另外一个tab正常显示,颠倒顺序,结果相同,前一个tab页中的datagrid无法显示,监控后台数据,返回正常,JS无报错。

从网上搜到的 easyui 中Datagrid 控件在列较多且无数据时,列显示不全的解决方案http://www.cnblogs.com/hxling/p/3919288.html

 onLoadSuccess:function(data){
                if(data.total==0){
                    var dc = $(this).data('datagrid').dc;
                    var header2Row = dc.header2.find('tr.datagrid-header-row');
                    dc.body2.find('table').append(header2Row.clone().css({"visibility":"hidden"}));


                }
            }

测试有效,不过仅适用无数据情况下,把表头给显示出来,其原理也是强制显示。

此外,测试了下结构类似的系统主菜单,在快速点击功能导航树,在主区域生成多个tab页,存在datagrid同样存在无法显示的问题(点击速度足够快的情况才发生)。

从现象上看,很像是datagrid控件拿到后台json数据后,进行显示处理时被中断了,很可能是控件自身的一个BUG。

easyui的源码混淆过了,从源码上找问题难度太大,有没有清楚问题出在哪?如何解决?

最后,自己摸索出一种既能间接实现目的又简便的方法,即动态添加tab页时,设置select属性为false,这样所有的tab页都为未选中状态,最后添加一行选择函数,选中第一个tab页,这样用户看到的效果就是自动加载了第一个tab内容,正常显示出来。