lyon_fanfan 2009-11-23 17:39
浏览 336
已采纳

Grid 下拉列表问题

我从后台返回一个数据集 用Grid显示 其中性别 职务都是数字 是字典ID 我打算在deferer的时候 将数字更新为汉字
[code="java"]
//-->数据列
var Employee_cm = new Ext.grid.ColumnModel
([

......
{header:'性别',dataIndex:'SexID',width:100,editor:Employee_SexCombox,
renderer:function(value, cellmeta, record, rowIndex, columnIndex, store){
return GetDictionaryNameByID(record.data["SexID"]);
}
},
]);

//翻译字典的公共函数
function GetDictionaryNameByID(DictionaryID)
{
Ext.Ajax.request
({
url : 'JSON/System/Dictionary.aspx',
params:
{
FunctionName : 'Sys_Dictionary_GetDictionaryName',
DictionaryID : DictionaryID
},
failure : function(response,option)
{
return '';
},

success : function(response,option)
{
if (Ext.util.JSON.decode(response.responseText).success)
{
var temp_infoObject = Ext.util.JSON.decode(response.responseText);
return temp_infoObject.info;
}
else
{
return '';
}
}
})
}
[/code]

但是 我发现grid每次翻译后都是空 后台返回值用FireBug调试是:{success:true,info:"男"} 请教一下大家为什么?如果我把GetDictionaryNameByID返回值写死 就可以翻译成功。。。。
[b]问题补充:[/b]
Rooock:
我用调试了 数据取到后台 没有问题

蔡华江:
record.data["SexID"]); 我这样写 可以取得数据
record.get("SexID"); 反倒不能得到数据 会后台报错

大家平时是怎么解决Grid字典项翻译的?也说一下 谢谢
[b]问题补充:[/b]
Rooock:
// 你是说这里temp_infoObject.info是男. 但是显示不了?

return temp_infoObject.info;
是的 程序有运行到这里 但是最终 GetDictionaryNameByID(DictionaryID)函数返回值时空

如果我在GetDictionaryNameByID 一开始就声明一个变量StrRetrun = 在各个return的地方 给这个变量赋值 最后返回 StrRetrun变量 就发现 最终grid显示的是'ddd' 但是在FF中调试 发现确实在success : function(response,option) 的时候 给StrRetrun赋过'男'的。。。。
[b]问题补充:[/b]
蔡华江:
原来是这样 我在原理上就错误了 没有理解正确 谢谢。
请问 你是怎么解决这个问题的呢? 翻译Grid中的字典项
最好能贴段代码 小弟这里谢过

  • 写回答

4条回答 默认 最新

  • CaiHuajiang 2009-11-24 10:59
    关注

    [quote]# //翻译字典的公共函数

    function GetDictionaryNameByID(DictionaryID)

    {

    ---------1------------

    Ext.Ajax.request

    ({

    url : 'JSON/System/Dictionary.aspx',

    params:

    {

    FunctionName : 'Sys_Dictionary_GetDictionaryName',

    DictionaryID : DictionaryID

    },

    failure : function(response,option)

    {

    return '';

    },

    success : function(response,option)

    {

    if (Ext.util.JSON.decode(response.responseText).success)

    {

    var temp_infoObject = Ext.util.JSON.decode(response.responseText);

    return temp_infoObject.info;

    }

    else

    {

    return '';

    }

    }

    })

    -----------2-----

    } [/quote]

    这个方法是异步的,意思就是说在文中1处程序运行,然后进行ajax请求,因此直接进入了2处,还不会等到ajax请求完成。因些2处的返回值就见是空。
    所以,这个设计和思路是错的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog