easyui中使用比較多的就是datagrid了,表格中添加連接,點擊跳轉,為比較常用的方式;往往在點及標簽后調用getSeleted方法會失效;
一.初始代碼:
{field:
'id'
,title :
'操作'
,align:
'center'
,width:
'10%'
,
formatter:
function
(value,row){
return
"<a onclick='show()' > 查看 </a>"
;
}
},
function
show(){
var
select = $(
'#targetTable'
).datagrid(
"getSelected"
);
var
selects = $(
'#targetTable'
).datagrid(
"getSelections"
);
/*獲取不到正在點擊的行*/
}
二.起因分析:
easyui中只有在觸發選中行之后調用,getSeleted 和 getSelections 才能取到對應的結果值;先觸發a標簽方法,還是先觸發選擇行,
測試代碼如下:
{field:
'id'
,title :
'操作'
,align:
'center'
,width:
'10%'
,
formatter:
function
(value,row){
return
"<a onclick='show()' > 查看 </a>"
;
}
},
onClickRow :
function
(index,data){
alert(
'clickRow'
);
}
function
show(){
alert(
"clickA"
);
}
點擊頁面按鈕后你會發現先調用的show方法,后觸發的onClickRow事件,
所以在show方法中想要獲取選中的行是不可行的方式;
三.解決方式:
在調用的時候進行值得傳遞;
在進行a標簽拼接的過程中在對應的方法中傳入參數;
四.解決代碼如下:
{field:
'id'
,title :
'操作'
,align:
'center'
,width:
'10%'
,
formatter:
function
(value,row){
return
"<a onclick=\"show('"
+row.id+
"')\" > 查看 </a>"
;
}
},
function
show(id){
alert(id);
}
五.備注:
因使用easyui不是太多,更多的時候是幫別人解決問題的時候遇到測試的,
以上觀點只為個人觀點,非最優解決方案,歡迎大神給出更優解決方案,多多交流才有進步;
有新問題請留言,大家一起探討一起進步;
