问题描述
- extjs grid如动态同步表单元格
-
我在grid里面设置了rowedting,里面有一列A是combobox,当用户选择了列A的值以后会向后台请求一个与列A级联的列B的值
grid的model里面有A和B
combobox里面有displayName和Value
我为列A设置了rendererfunction(value,metadata,record){ var selectStore=Ext.data.StoreMgr.lookup('SelectStore'); var index = SelectStore.find('A',value); if(index!=-1){ record.data.B=dirSelectStore.getAt(index).data.value; return SelectStore.getAt(index).data.displayName; } }
我这样写后,后台的store里面的值是对的,但是界面上是没有显示的,应该怎样做,才能同步store和grid的值
解决方案
<div style="height:500px;background:#999"></div>
<div id="fixedMenu" style="background:#eee;width:100%;">我是菜单,我到页头会固定</div>
<div style="height:900px;background:#999"></div>
<script type="text/javascript" src="http://www.coding123.net/js/jquery.js"></script>
<script type="text/javascript">
$(function () {
var ie6 = /msie 6/i.test(navigator.userAgent)
, dv = $('#fixedMenu'), st;
dv.attr('otop', dv.offset().top); //存储原来的距离顶部的距离
$(window).scroll(function () {
st = Math.max(document.body.scrollTop || document.documentElement.scrollTop);
if (st >= parseInt(dv.attr('otop'))) {
if (ie6) {//IE6不支持fixed属性,所以只能靠设置position为absolute和top实现此效果
dv.css({ position: 'absolute', top: st });
}
else if (dv.css('position') != 'fixed') dv.css({ 'position': 'fixed', top: 0 });
} else if (dv.css('position') != 'static') dv.css({ 'position': 'static' });
});
});
</script>
http://www.coding123.net/article/20121101/javascript-fix-guider-when-scroll-to-top.aspx
解决方案二:
添加a的renderer没用,要给a添加change事件,执行你的ajax或者其他操作来更新b的编辑器,如下
listeners: { change: function (cb, newvalue, oldvalue, opts) {
var b = Ext.getCmp('b对应的编辑器的id');
//..你的操作。。不知道你b的编辑器是什么,自己找对应的编辑器来API来操作。如果也是combobox可以按照下面的
var store = b.getStore();
store.load({ params: {a:newvalue} });//依据a选择的新值重新加载下b的数据源,你的动态页记得获取a参数查询数据对应的数据
}
}
时间: 2024-11-16 22:37:39