在使用datagrid时,经常需要添加一列操作,里面可以有一些例如详情,删除,修改之类的超链接,这样就用到datagrid的格式化属性,如下代码所示
<th field="detail" width="8%" align="center" formatter="showDetailBtn">操作</th>
function showDetailBtn(value,rec,index){
return "<a href='#' οnclick='doubleClickShowDetail(" + rec.id+ ");' >详情</a>";
}
如果是删除的操作我们可以像上面这样直接传一个id过去就可以根据id删除,但是当为修改或详情时,我们可以从rec中直接取值传过去,在使用的过程发现把rec.id
换成rec时,怎么都是报错的,这点搞不明白为什么。然后想到先把对象转化为json格式字符串,然后获取后在转换成obj,所以修改代码如下
function showDetailBtn(value,rec,index){
var temp = JSON.stringify(rec);
return "<a href='#' οnclick='doubleClickShowDetail(" + temp + ");' >详情</a>";
}
按照正常的逻辑这时候应该在doubleClickShowDetail方法中使用JSON.parse()方法转换为obj,如下。
function doubleClickShowDetail(rowData){
var obj = JSON.parse(rowData)
var seqeunceCode = obj.id;
}
但是实际上并不需要通过JSON.parse()方法转换,而是传过来的就是对象,即直接可以rowData.id
这点也不是很明白,只能先记录。
=================2017年1214日补充====================
1实现上述功能还有个前提,就是取消easyui自带的单击事件,否则自定义的事件是无法生效的。修改data-options
data-options="
rownumbers:true,
singleSelect:false,
autoRowHeight:false,
pagination:true,
pageSize:10,
onClickRow:function(rowIndex, rowData){
$('#datagrid').datagrid('unselectRow', rowIndex);
}"
要加上onClickRow方法
2.另外,当在自定义的方法中传一个参数时,也需要使用JSON.stringify()格式化,才能传值,否则会报错