先看效果:
这个是网上我找到的 可以运行 但是我在应用的时候发现 当我选中第一条数据(lugreen 男 26)的语文的时候 同时也选中了第二条数据(lisi 男 25) 当我双击第一条数据的语文的时候 第二条数据也会发生展开或者收缩动作 而且 如果总共只有3条祝主数据 子数据多于3条的话 双击或点击子数据中的第4(>3) 条的话 就会报this.getRow(...)' 为空或不是对象和Ext.fly(...)' 为空或不是对象的错
请问如何解这个BUG 或者 让子Grid 展开的时候 不可以选择
这个是网上我找到的 可以运行 但是我在应用的时候发现 当我选中第一条数据(lugreen 男 26)的语文的时候 同时也选中了第二条数据(lisi 男 25) 当我双击第一条数据的语文的时候 第二条数据也会发生展开或者收缩动作 而且 如果总共只有3条祝主数据 子数据多于3条的话 双击或点击子数据中的第4(>3) 条的话 就会报this.getRow(...)' 为空或不是对象和Ext.fly(...)' 为空或不是对象的错
请问如何解这个BUG 或者 让子Grid 展开的时候 不可以选择
解决方案 »
- 想用jq实现标签的展开效果,没有办法做到单个标签单独展开
- 问个内存泄露的小问题
- js怎样判断同一类型浏览器全部关闭
- 深入浅出ExtJS 第二版 第二章最后一个实例autoload出不来
- js可以创建<script么?
- 对XMLHttpRequest的困惑??请各位帮帮忙
- 函数调用问题
- 在哪里设置禁止javascript?
- 当窗口失去焦点时,就把窗口关闭,如何做??
- 获取div中的name属性的值 [急]
- easyui的combobox用法 json传值 取数据库值 如何放在 easyui-combobox 里面
- extjs Ext.grid.GridPanel加载数据中如何将loading 的效果去掉
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test</title>
<script type="text/javascript"> </script>
<link rel="stylesheet" type="text/css" href="Lib/ExtJs/2_2/resources/css/ext-all.css" /> <script type="text/javascript" src="Lib/ExtJs/2_2/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="Lib/ExtJs/2_2/ext-all-debug.js"></script>
<script type="text/javascript" src="Lib/ExtJs/2_2/source/locale/ext-lang-zh_CN.js"></script>
<script type="text/javascript" src="Lib/ExtJs/plus/RowExpander.js"></script> <script type="text/javascript">
Ext.onReady(function(){
var testData=[
["lugreen","男",26,[["数学",100],["语文",150]]]
,["lisi","男",25,[["数学",100],["语文",150]]]
,["zhangsan","男",27,[["数学",120],["语文",158]]]
];
//
storeTest= new Ext.data.SimpleStore({
fields: ["name","sex","age","grade"]
,data: testData
}); var expander = new Ext.grid.RowExpander({
tpl : new Ext.XTemplate(
'<div class="detailData">',
'',
'</div>'
)
});
expander.on("expand",function(expander,r,body,rowIndex){
//查找 grid
window.testEle=body;
//alert(body.id);
if (Ext.DomQuery.select("div.x-panel-bwrap",body).length==0){
//alert("a");
var data=r.json[3];
var store=new Ext.data.SimpleStore({
fields: ["class","degrade"]
,data:data
});
var cm = new Ext.grid.ColumnModel([
{header: "科目",dataIndex: 'class',width: 130,hideable:false,sortable:false,resizable:true}
,{header: "成绩",dataIndex: 'degrade',width: 130,hideable:false,sortable:false,resizable:true}
]);
Ext.DomQuery.select("div.detailData")[0];
var grid = new Ext.grid.GridPanel(
{
store:store,
cm:cm,
renderTo:Ext.DomQuery.select("div.detailData",body)[0],
autoWidth:true,
autoHeight:true
}
);
}
}); //var sm=new Ext.grid.CheckboxSelectionModel({singleSelect:true});
var cm = new Ext.grid.ColumnModel([
expander
,{header: "姓名",dataIndex: 'name',width: 50,hideable:false,sortable:false}
,{header: "性别",dataIndex: 'sex',width: 130,hideable:false,sortable:false,resizable:true}
,{header: "年龄",dataIndex: 'age',width: 130,hideable:false,sortable:false,resizable:true}
]); var grid = new Ext.grid.GridPanel(
{
id:'testgrid',
store:storeTest,
cm:cm,
renderTo:"grid1",
width:780,
autoHeight:false,
height:300,
listeners:{},
plugins:[expander]
}
);
});
</script>
<style type="text/css">
#div2 h2 {
font-weight:200;
font-size:12px;
}
.c1 h2 {
font-weight:200;
}
</style>
</head>
<body>
<div id="grid1">
</div>
<div id="grid2">
</div> </body>
</html> 我发现主Grid中的属性会有效果并且影响着 expander中的Grid 我在expander中的Grid设置disabled: true, disabledClass: "", 子Grid还是可以选择
关于2楼IBM_hoojo 说的Ext.grid.RowSelectionMode组件的selectRow 我还没找到如何做
'mouseover' : function(e) {
e.stopPropagation();
},
'mouseout' : function(e) {
e.stopPropagation();
}
});
grid1.afterMethod("processEvent", function(n, e) {
e.stopPropagation();
});
//嵌套Grid加以下两个事件监听就可以了
mouseover: function(e){
e.stopEvent();
},
rowmousedown: function(g, r, e){
e.stopEvent();
}