如上图,这几列字段的filed都是指定的同一个, field: 'Position'
json数据: "Position":"非机动车道,其它" 也可以是 "Position":"机动车道"
然后我想是用formatter来控制单元格的显示,如果value值能匹配到就返回1,否则返回空
var pattern = /^机动车道$/;
var data = value.split(",");
for (var i = 0; i < data.length; i++) {
if (pattern.test(data[i])) {
return 1;
break;
} else {
return "";
}
但是结果显示出来却不对,断点调试发现它每次只会运行第一个指定field: 'Position'的列,其他列好像不管用,
高手来解答下啊!!
formatter: function(value,row,index){
//用 row.Position 来获取值, 不要用value 你试试
}
不行
@N。: 你得设置下datagrid的 column, 保证每个field 都是不一样的 比如 field: 'Position', field: 'Position1', field: 'Position2', field: 'Position3' ,这个自己定义就行
@待来年山花烂漫之时: 问题是那么做的话position就太多了,有三四十个,很麻烦。客户提的需求太二了,没办法。
@N。: 刚好有时间写了个例子 你看看
<table class="easyui-datagrid" id="dg" style="width:400px;height:250px"> </table>
<script type="text/javascript">
var cm = [[
{
field: 'Position1', title: '机动车道', width: 100,
formatter: function (value, row, index) {
var arr = row.Position.split(',');
for (var i = 0; i < arr.length; i++) {
if (arr[i] == "机动车道") {
return 1;
}
}
return 0;
}
},
{
field: 'Position2', title: '非机动车道', width: 100,
formatter: function (value, row, index) {
var arr = row.Position.split(',');
for (var i = 0; i < arr.length; i++) {
if (arr[i] == "非机动车道") {
return 1;
}
}
return 0;
}
},
{
field: 'Position3', title: '混合车道', width: 100,
formatter: function (value, row, index) {
var arr = row.Position.split(',');
for (var i = 0; i < arr.length; i++) {
if (arr[i] == "混合车道") {
return 1;
}
}
return 0;
}
}
]];
var store = [{ "Position": "非机动车道,非机动车" }, { "Position": "机动车道,混合车道" }];
$('#dg').datagrid({
columns: cm,
url: 'datagrid_data.json', fitColumns: true, singleSelect: true,data:store
});
</script>
@待来年山花烂漫之时: 传递的json 只要一个position就可以了?
field不用跟position完全匹配吗?
@N。: 是的. 灵活控制
@待来年山花烂漫之时: 太感谢你了,真的!