문제

dojox 데이터 그리드에서 선택적 셀에 대한 편집을 비활성화하거나 활성화하는 방법 I.E

데이터 그리드에 두 개의 열 (a, b)이 있다고 상상해보십시오.A 열 A의 값을 기준으로 B의 열 값을 편집 할 수있게하고 싶습니다. 나는 Dojo 버전에 특정한 스택 오버 플로우에서 하나의 솔루션을 보았습니다.우리가 목표를 달성 할 수있는 API가 있는지 알고 싶습니다.

도움이 되었습니까?

해결책

내 기본 방법은 를 무시하는 것입니다.

canEdit: function(inCell, inRowIndex)

DataGrid의 방법.그로부터 항목을 얻을 수 있습니다 :

this.getItem(inRowIndex)

은 편집 할 수 있거나 아닌 경우 작업을 수행하고 true / false를 반환합니다.

이렇게하면 열의 편집 가능한 플래그가 오버라이드되지 않으므로 필요할 경우 뭔가를 수행해야합니다.

다른 팁

API는 없습니다.나는 또한 최근에 비슷한 요구 사항을 가지고 있었고 여기에 내가 어떻게 구현한지

1) 처음에는 그리드의 필드 섹션에서 그렇게 만들었 기 때문에 열 B가 편집 가능합니다. 2) onRowClick을 사용하여 행 렌더링을 캡처합니다.이런 식으로 을해야합니다

dojo.connect(grid, "onRowClick", grid, function(evt){
  var idx = evt.rowIndex,
  item = this.getItem(idx);

  //  get a value out of the item
  msname = this.store.getValue(item, "msname");
  if(msname != null &U& (trim(msname) == trim(offsetName))) {
    dojox.grid.cells._Base.prototype.format(idx, item);
  }
});
.

다음 방법은 필수 열의 인라인 편집을 필요로합니다.우리는 행 인덱스와 열 인덱스를 전달하고 있습니다.

dojox.grid.cells._Base.prototype.format = function(inRowIndex, inItem){
    var f, i=grid.edit.info, d=this.get ? this.get(inRowIndex, inItem) : (this.value || this.defaultValue);
    d = (d && d.replace && grid.escapeHTMLInData) ? d.replace(/&/g, '&amp;').replace(/</g, '&lt;') : d;

                //Check inRowIndex and inItem to determine whether to be editable for this row here.

    if(this.editable && (this.alwaysEditing || (i.rowIndex==inRowIndex && i.cell==this))){
    return this.formatEditing(d, inRowIndex);
    }else{
    return this._defaultFormat(d, [d, inRowIndex, this]);
    }
}
.

도움이되기를 바랍니다.아마 JSFIDDLE을 추가 할 수 있고 우리는 고정 시도 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top