现在需要在 一个 EditorGridPanel中加入一个combox 但是combox的值是根据当前行的 一些信息 加载成的 该怎么做 下面是一些代码 请高手帮忙啊 !!!!!万分感谢啊 !!var box = new Ext.form.ComboBox({
typeAhead : true,
triggerAction : 'all',
mode : 'local',
valueField : 'name',
displayField : 'name',
lazyRender : true,
store : Jer.TaskGroupTreeMenuNew.getBBQStore(
'402881e62e6b6c3e012e6b8e0f0c000e',
'402881e62fc34dea012fc353c7e40006')
});getBBQStore : function(userID, taskID) {
var BBQPparam = {
userID : userID,
taskID : taskID
};
var BBQStore = new Ext.data.Store({
proxy : new Ext.data.HttpProxy({
url : 'ExtControllerServlet?action=taskAction.getAllBBQ'
}),
reader : new Ext.data.JsonReader({
totalProperty : 'totalCount',
root : 'data'
}, Jer.taskgroupTreemenu.reader)
});
BBQStore.load({
params : BBQPparam
});
return BBQStore;
}
下面这段代码就是主要的地方,gird的每一行都会有自己的combox该怎么写啊,上面的是用到的方法,我把参数写死了,所有行取到的都是同样的内容,是该在什么地方写 ,我目前想的方法是找到gird中的改行的组件,然后把combox里面的store的内容刷新了,如果能直接动态生成combox就更好了,一点思路都没有高手指教一下啊 ,万分感谢啊!!
colModel : new Ext.grid.ColumnModel([
{
header : "报表期",
dataIndex : "bbq",
sortable : true,
editor : box,
renderer : function(value, cellmeta, record, rowIndex, columnIndex,store) {
var frequency = record.data.frequency;
var bbq = record.data.bbq;
return "<b>"+ Jer.operationSons.getBbqLookTaskBbq(frequency,bbq)+ "</b>";}
typeAhead : true,
triggerAction : 'all',
mode : 'local',
valueField : 'name',
displayField : 'name',
lazyRender : true,
store : Jer.TaskGroupTreeMenuNew.getBBQStore(
'402881e62e6b6c3e012e6b8e0f0c000e',
'402881e62fc34dea012fc353c7e40006')
});getBBQStore : function(userID, taskID) {
var BBQPparam = {
userID : userID,
taskID : taskID
};
var BBQStore = new Ext.data.Store({
proxy : new Ext.data.HttpProxy({
url : 'ExtControllerServlet?action=taskAction.getAllBBQ'
}),
reader : new Ext.data.JsonReader({
totalProperty : 'totalCount',
root : 'data'
}, Jer.taskgroupTreemenu.reader)
});
BBQStore.load({
params : BBQPparam
});
return BBQStore;
}
下面这段代码就是主要的地方,gird的每一行都会有自己的combox该怎么写啊,上面的是用到的方法,我把参数写死了,所有行取到的都是同样的内容,是该在什么地方写 ,我目前想的方法是找到gird中的改行的组件,然后把combox里面的store的内容刷新了,如果能直接动态生成combox就更好了,一点思路都没有高手指教一下啊 ,万分感谢啊!!
colModel : new Ext.grid.ColumnModel([
{
header : "报表期",
dataIndex : "bbq",
sortable : true,
editor : box,
renderer : function(value, cellmeta, record, rowIndex, columnIndex,store) {
var frequency = record.data.frequency;
var bbq = record.data.bbq;
return "<b>"+ Jer.operationSons.getBbqLookTaskBbq(frequency,bbq)+ "</b>";}
store : Jer.TaskGroupTreeMenuNew.getBBQStore(
'402881e62e6b6c3e012e6b8e0f0c000e',
'402881e62fc34dea012fc353c7e40006')
难道说又是一个盗用别人代码
恩啊 这些东西都是我们组长写的,我才写代码不到3个月。。 我不明白 能不能说仔细点 现在的那个combox的store就只加载一次,我想在renderer中重新刷新store但是到后台之后 我的2个参数都没有收到,怎么回事?
renderer : function(value, cellmeta,
record, rowIndex, columnIndex,
store) {
var taskID = record.data.id;
var userID = Jer.Global.USERID;
var comboxStore = box.store;
if (userID && taskID) {
comboxStore
.on(
"beforeload",
function(st,
option) {
option.params.userID = userID;
option.params.taskID = taskID;
});
comboxStore.reload();
}
var frequency = record.data.frequency;
var bbq = record.data.bbq;
return "<b>"
+ Jer.operationSons
.getBbqLookTaskBbq(
frequency,
bbq)
+ "</b>";
}
把在ext官网上找到的一些相关的东西发出来 ext的成员写的别人回复都能用但是我试了一下还是不行 就是ExtHelper这个找不着 我google一下也没找着高手继续帮忙看下谢谢啊 !!!
Ext.ns("Ext.ux.renderer");
Ext.ux.renderer.ComboRenderer = function(options) {
var value = options.value;
var combo = options.combo; var returnValue = value;
var valueField = combo.valueField; var idx = combo.store.findBy(function(record) {
if (record.get(valueField) == value) {
returnValue = record.get(combo.displayField);
return true;
}
}); // This is our application specific and might need to be removed for your
// apps
if (idx < 0 && value == 0) {
returnValue = '';
} return returnValue;
};Ext.ux.renderer.Combo = function(combo) {
return function(value, meta, record) {
return ExtHelper.renderer.ComboRenderer({
value : value,
meta : meta,
record : record,
combo : combo
});
};
};然后调用的时候比较简单
{
header : "报表期",
dataIndex : "bbq",
sortable : true,
editor : box,
lazyRender : true,
// renderer: Ext.ux.renderer.Combo(box)}高手帮忙看下啊 如果别人写出来我在把方法贴出来