在grid中放可编辑组件gridSelect时,平台默认的需点击两次才可以把焦点定位到gridSelect中并显示下拉
可以参考下面的方案实现点击一次就定位到gridSelect中并显示下拉
grid点击会触发onRowClick事件,可以先判断点击的是不是gridSelect所在的列,然后操作gridSelect,具体如下:
Model.prototype.mainGridRowClick = function(event){
var grid = event.source;
var rowID = event.rowID;
var td = event.domEvent.target;//获取触发事件的dom节点
if(td.tagName.toUpperCase()!='TD') {//当grid的列中放了input等组件时,获取的当前元素不是td
td = $(td).closest('td')[0];//获取到对应td
}
var index = $.jgrid.getCellIndex(td);//获取列索引
var colDef = event.source.getColDef(index);//获取列定义
var gridselect = this.comp("gridSelect2");
if(colDef.name == 'fCode'){//判断是不是gridselect所在的列
setTimeout(function() {
var cell = grid.getCell(rowID, "fCode");
grid.editCell(cell);
$(td).find("input").focus();//把焦点设置到gridSelect的编辑框中
gridselect.showOption();//显示gridSelect的下拉项
}, 5);
}
};
评一波