이 글은 오래된 글이지만, 같은 문제가 있기 때문에 공유하고 싶습니다.
Ext.grid.column.Column의 click 이벤트 핸들러를 재정 의하여 해결했습니다. 열 헤더의 가장자리를 두 번 클릭하기 위해 처리되는 전용 onElDblClick 이벤트가 있습니다.
이 함수를 재정의하면 전체 열 머리글을 두 번 클릭하여 처리 할 수도 있습니다. 다음은 OnElClick 이벤트 핸들러를 재정 의하여 SetTimeout 호출을 통해 보류중인 더블 클릭 동작이있을 수 있다는 것을 알려주는 것입니다. 그렇지 않으면 정렬과 같은 단일 클릭 이벤트에 첨부 된 모든 이벤트가 항상 호출됩니다.
재정의하려면 아래 코드를 참조하십시오. ExtJS 4.1.1a에서만 테스트했지만 다른 ExtJS 버전으로 쉽게 이식 할 수 있습니다.
// enable doubleclick on the column to expand it to the max width as well
Ext.override(Ext.grid.column.Column, {
/**
* @private
* Double click
* @param e
* @param t
*/
onElDblClick: function(e, t) {
var me = this,
ownerCt = me.ownerCt;
if (ownerCt && Ext.Array.indexOf(ownerCt.items, me) !== 0) {
if (me.isOnLeftEdge(e)) {
ownerCt.expandToFit(me.previousSibling('gridcolumn'));
} else {
ownerCt.expandToFit(me);
}
}
},
onElClick: function(e, t) {
// The grid's docked HeaderContainer.
var me = this,
ownerHeaderCt = me.getOwnerHeaderCt();
if (me.el.getAttribute("data-dblclick") == null) {
me.el.dom.setAttribute("data-dblclick", 1);
setTimeout(function() {
if (me.el.getAttribute("data-dblclick") == 1) {
handleElClick(me, e, t);
}
me.el.dom.removeAttribute("data-dblclick");
}, 300);
} else {
me.el.dom.removeAttribute("data-dblclick");
me.onElDblClick(e, t);
}
function handleElClick(me, e, t) {
var ownerHeaderCt = me.getOwnerHeaderCt();
if (ownerHeaderCt && !ownerHeaderCt.ddLock) {
// Firefox doesn't check the current target in a within check.
// Therefore we check the target directly and then within (ancestors)
if (me.triggerEl && (e.target === me.triggerEl.dom || t === me.triggerEl.dom || e.within(me.triggerEl))) {
ownerHeaderCt.onHeaderTriggerClick(me, e, t);
// if its not on the left hand edge, sort
} else if (e.getKey() || (!me.isOnLeftEdge(e) && !me.isOnRightEdge(e))) {
me.toggleSortState();
ownerHeaderCt.onHeaderClick(me, e, t);
}
}
}
}
});
더블 클릭 체크 내가 여기 https://stackoverflow.com/a/16033129/3436982 발견 개조 버전입니다.
안녕. 답장을 보내 주셔서 감사합니다. 내 경우는 조금 까다 롭습니다. 열은 외부 소스에서 동적으로 생성됩니다. 나는 칼럼의 일반적인 길이를 모른다. 그래서 나는 모든 칼럼에 대해 같은 너비를 설정했다. 데이터가로드 된 후 일부 열은 전체 내용을 표시 할만큼 충분히 넓지 않습니다. 하나 이상의 열을 확장하고 모든 열을 확장하지 않으려면 머리글에서 셀 내용을 표시하거나 두 번 클릭하여 도구 설명을 사용하여 생각하고 있습니다. – Simon
셀을 텍스트로 감싸는 데 사용할 수있는 CSS 트릭이 있으므로 셀에 너무 길면 다음 줄로 나뉩니다. – phatskat