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 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
  • ¥50 NT4.0系统 STOP:0X0000007B