第一次,很长一段时间...... 我正在使用Ext JS 4.2.2.1144 我有一个网格,我从服务器(php)的查询返回json形式的元数据,这是以前在用户决定重新对齐和调整列然后保存该信息时生成的。所有字段,如width,dataIndex,align,以及在使用metaChanged函数时重新配置网格的所有字段。我遇到的问题是其中一列需要发送tpl的信息,这实际上是要显示的图像的位置。我的Json看起来像这样
{
"totalCount":"2",
"root":"items",
"metaData":
{
"fields":[
{"name":"queryid"},
{"name":"createUser"},
{"name":"subject"},
{"name":"priorityImage"}
],
"columns":[
{
"dataIndex":"queryid",
"width":100,
"text":"Queryid"
},
{
"dataIndex":"createUser",
"width":100,
"text":"Owner",
"align":"center"
},
{
"dataIndex":"subject",
"width":200,
"text":"Subject",
"hidden":true
},
{
"dataIndex":"priorityImage",
"width":70,"text":"Priority",
"hidden":true,
"align":"center",
"xtype":"templatecolumn",
"tpl":['<img src="_images/{priorityImage}" height="20px" width="20px" />']
}
]
},
"items":[
{
"queryid":"1",
"createUser":"1",
"subject":"Here is a new project",
"priorityImage":"orange.png"
},
{
"queryid":"1",
"createUser":"1",
"subject":"SAL Form 4",
"priorityImage":"roundlightPurple.png"
}
]
}
我已经尝试了各种不同的方式来发送最后一列的tpl,但没有一种方法是成功的。谁有任何关于如何实现这一目标的线索?结果最终是文本而不是实际图像。如果我使用默认模型直接从商店加载网格,我从tpl获取图像,但在通过元数据执行时却没有。我试过单引号,双引号,没有括号,带括号,哈哈。我没有想法尝试。希望我足够清楚。 Anyhoo,感谢您提前提供任何帮助,这个真的让我发疯, 谢谢, C5
答案 0 :(得分:0)
我在很久以前做过类似的事情,当我需要发送渲染器(函数)时,它们总是显示为文本。那时我还没有找到其他方法,只是扫描收到的metaData,看是否有渲染器,并在收到的文本上调用eval
来获取功能。
虽然不是&#34;做这个&#34;回答,我希望它有所帮助。
答案 1 :(得分:0)
我想为此解决这个问题,虽然可能不是最有效的解决方案。
将tpl发送到服务器时,它实际上是从中转换而来的
<img src="_images/{priorityImage}" height="20px" width="20px" />
来
<img src="_images/{priorityImage}" height="20" width="20"
/&gt;
所以现在这是我现在的解决办法: 在我调用代码加载商店之前
Ext.getCmp('lblCurrentMetaGrid').setText('projectsGridGrid');
store.on('metachange', metaChanged, this);
然后在metaChanged函数中它看起来像这样:
function metaChanged(store,meta){ var gridname = Ext.getCmp('lblCurrentMetaGrid').text; var grid = Ext.getCmp(gridname); for(var c = 0; c < meta.columns.length; c++ ){ var column = meta.columns[c]; var tpl = column.tpl; if ( tpl !== undefined){ meta.columns[c].tpl[0] = meta.columns[c].tpl[0].replace('<','<'); meta.columns[c].tpl[0] = meta.columns[c].tpl[0].replace('>','>'); meta.columns[c].tpl[0] = meta.columns[c].tpl[0].replace(/\"/g,'"'); } } //lets look at all the metadata grid.reconfigure(store,meta.columns); }
现在,我正在网格中获取图像。