现在需要在 一个 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>";}

解决方案 »

  1.   

    combox里面的store现在是写死的,我需要的是 动态的往里面传2个参数 等于说grid的每一个tr都有一个不同的combox  这个该怎么实现  主要是没一点思路 网上也找不到类似的问题 就是下面这一块 该怎么在combox的editor中动态的传递参数   谢谢了啊 !
    store : Jer.TaskGroupTreeMenuNew.getBBQStore(
    '402881e62e6b6c3e012e6b8e0f0c000e',
    '402881e62fc34dea012fc353c7e40006')
      

  2.   

    上面的store是自己封装了一下,你加个参数不就行了.会封装store竟然不会用??!!
    难道说又是一个盗用别人代码
      

  3.   


    恩啊  这些东西都是我们组长写的,我才写代码不到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>";
    }
      

  4.   

    好了结束了这个问题我不用管了。。但是目前还没有解决方案 公司其他人在看呢。
    把在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)}高手帮忙看下啊 如果别人写出来我在把方法贴出来