각도 그리드 ag-grid columnDefs 동적으로 변경
는 에에에 대해서.columnDefs
동적으로 변화합니다. gridOptions my gridOptions:
$scope.gridOptions = {
columnDefs: [],
enableFilter: true,
rowData: null,
rowSelection: 'multiple',
rowDeselection: true
};
그리고 서버에서 데이터를 가져올 때:
$scope.customColumns = [];
$http.post('/Home/GetProducts', { tableName: 'TABLE_PRODUCT' }).success(function (data) {
angular.forEach(data.Columns, function (c) {
$scope.customColumns.push(
{
headerName: c.Name,
field: c.Value,
width: c.Width
}
);
});
$scope.gridOptions.columnDefs = $scope.customColumns;
$scope.gridOptions.rowData = data.Products;
$scope.gridOptions.api.onNewRows();
}).error(function () {
});
주의: 여기 c는 서버로부터의 컬럼오브젝트입니다.
하여 $가 있지만 $scope.gridOptions.columnDefs는 공백 그리드를 사용합니다.$scope.customColumns
배열은 오른쪽 생성된 열 개체로 채워집니다.이 버그가 맞습니까, 아니면 제가 잘못하고 있는 건가요?
은 grid.ag-grid 에서 한 번 됩니다.초기화 후 열을 변경할 경우 그리드에 알려야 합니다.는 '아까운'이라고 부르면 .gridOptions.api.setColumnDefs()
이 api 메서드의 자세한 내용은 ag-grid 문서를 참조하십시오.
이건 이미 고쳐진 것 같아요.
나는 지금 최신 앵글과 ag-grid로 이와 같은 것을 할 수 있다.여기서 ngx를 사용하고 있지만 이 경우 rowData에서 반환되는 데이터의 속성 이름에 따라 열 정의를 가져오므로 열 정의를 비동기적으로 가져올 수 있습니다.
먼저 백엔드 API에서 행 데이터를 가져옵니다.그런 다음 데이터를 가져오면 Select for 열에서 반환된 데이터의 헤더를 속성에 매핑하는 작업을 수행합니다.
데이터는 헤더 없이 표시되지 않습니다. 헤더가 있는 즉시 모든 열 정의와 데이터로 그리드를 다시 그립니다.
<ag-grid-angular
style="width: 100%; height: 500px;"
class="ag-theme-balham"
[rowData]="rowData$ | async"
[columnDefs]="columnsDefs$ | async"
>
</ag-grid-angular>
export class AgGridComponent {
@Select(MyState.getColumnDefs) public columnsDefs$!: Observable<ReadonlyArray<any>>;
@Select(MyState.getRowData) public rowData$!: Observable<ReadonlyArray<any>>;
}
각지다.
데모를 참조해 주세요.
해 주세요.ag-grid-angular
컴포넌트의 columnDefs가 같은 이름의 컴포넌트의 속성에 바인딩되어 있습니다.
<ag-grid-angular
#agGrid
style="width: 100%; height: 300px;"
id="myGrid"
class="ag-theme-alpine"
[columnDefs]="columnDefs"
에 대한 .app.component
.ag-Grid에 됩니다.를 들어, 의 첫 번째 하십시오.app.component
의 컨스트럭터 함수 "컨스트럭터
constructor() {
this.columnDefs = colDefsAthleteExcluded;
}
ag-Grid 인스턴스에서 열을 추가하거나 제거할 수 있습니다. columnDefs 바인딩 속성을 업데이트하여 새 열 정의 집합을 전달하기만 하면 됩니다.
이전에 존재하지 않았던 열이 ag-Grid 인스턴스에 추가됩니다.
새 집합에 포함되지 않은 열은 ag-Grid 인스턴스에서 제거됩니다.
"선수 열 포함" 및 "선수 열 제외" 버튼의 이벤트 핸들러에서 이 코드를 참조하십시오.
// removes the athlete column
onBtExcludeAthleteColumn() {
this.columnDefs = colDefsAthleteExcluded;
}
// adds the athlete column
onBtIncludeAthleteColumn() {
this.columnDefs = colDefsAthleteIncluded;
}
컬럼 메서드를 ag-Grid API 메서드라고 .getColumnDefs()
그리드의 현재 열에 대한 참조를 가져옵니다.그런 다음 columnDefs 바인딩 속성을 업데이트하기 전에 원하는 속성을 변경하여 열 위에 매핑합니다.
그런 다음 ag-Grid는 기존 열을 ag-Grid 인스턴스의 열과 일치시키고 변경된 열을 업데이트합니다.
"Set HeaderNames" 및 "Remove HeaderNames" 버튼의 이벤트 핸들러에서 이 코드를 참조하십시오.
// sets each columns headerName property
setHeaderNames() {
var columnDefs = this.gridApi.getColumnDefs();
columnDefs.forEach(function(colDef, index) {
colDef.headerName = "C" + index;
});
this.columnDefs = columnDefs;
}
// clears each columns headerName property
removeHeaderNames() {
var columnDefs = this.gridApi.getColumnDefs();
columnDefs.forEach(function(colDef, index) {
colDef.headerName = undefined;
});
this.columnDefs = columnDefs;
}
반응하다.
데모를 참조해 주세요.
리액트 ag-Grid ag-Grid 。에서는 상태 를 만들고 을 알 수 columns
되는 ★★★agGridColumn
을 펼칩니다.
const App = () => {
const [columns, setColumns] = useState(colDefsAthleteExcluded);
return (
{columns.map(column => (
<AgGridColumn {...column} key={column.field} />
))}
하려면 단순히 '열'을 .setColumns
setState 、 set set set set set set 。
- 이전에 존재하지 않았던 열이 ag-Grid 인스턴스에 추가됩니다.
- 새 집합에 포함되지 않은 열은 ag-Grid 인스턴스에서 제거됩니다.
"선수 열 포함" 및 "선수 열 제외" 버튼의 이벤트 핸들러에서 이 코드를 참조하십시오.
// removes the athlete column
const onBtExcludeAthleteColumn = () => {
setColumns(colDefsAthleteExcluded);
};
// adds the athlete column
const onBtIncludeAthleteColumn = () => {
setColumns(colDefsAthleteIncluded);
};
컬럼 메서드를 ag-Grid API 메서드라고 .getColumnDefs()
그리드의 현재 열에 대한 참조를 가져옵니다.열 위에 한 후 호출합니다.setColumns
할 수 있습니다.columns
상태 변수
그런 다음 ag-Grid는 기존 열을 ag-Grid 인스턴스의 열과 일치시키고 변경된 열을 업데이트합니다.
"Set HeaderNames" 및 "Remove HeaderNames" 버튼의 이벤트 핸들러에서 이 코드를 참조하십시오.
// sets each columns headerName property
const setHeaderNames = () => {
const newColumns = gridApi.getColumnDefs();
newColumns.forEach((newColumn, index) => {
newColumn.headerName = "C" + index;
});
setColumns(newColumns);
};
// clears each columns headerName property
const removeHeaderNames = () => {
const newColumns = gridApi.getColumnDefs();
newColumns.forEach((newColumn, index) => {
newColumn.headerName = undefined;
});
setColumns(newColumns);
};
Vue.
데모를 참조해 주세요.
아래를 보시면,ag-grid-vue
컴포넌트의 columnDefs가 같은 이름의 컴포넌트의 속성에 바인딩되어 있습니다.
<ag-grid-vue
style="width: 100%; height: 300px;"
class="ag-theme-alpine"
id="myGrid"
:columnDefs="columnDefs"
「 」에 모든 columnDefs
Vue ag-Grid ag-Grid 。를 들어, 의 첫 번째 하십시오.beforeMount
다음 중 하나:
beforeMount() {
this.columnDefs = colDefsAthleteExcluded;
}
인스턴스에 하려면 ag-Grid를 합니다.columnDefs
바인딩된 속성, 새 열 정의 집합을 전달합니다.
- 이전에 존재하지 않았던 열이 ag-Grid 인스턴스에 추가됩니다.
- 새 집합에 포함되지 않은 열은 ag-Grid 인스턴스에서 제거됩니다.
"선수 열 포함" 및 "선수 열 제외" 버튼의 이벤트 핸들러에서 이 코드를 참조하십시오.
// removes the athlete column
btnExcludeAthleteColumn() {
this.columnDefs = colDefsAthleteExcluded;
},
// adds the athlete column
btnIncludeAthleteColumn() {
this.columnDefs = colDefsAthleteIncluded;
}
컬럼 메서드를 ag-Grid API 메서드라고 .getColumnDefs()
그리드의 현재 열에 대한 참조를 가져옵니다. 열한 후 합니다.columnDefs
속박된 속성.
그런 다음 ag-Grid는 기존 열을 ag-Grid 인스턴스의 열과 일치시키고 변경된 열을 업데이트합니다.
"Set HeaderNames" 및 "Remove HeaderNames" 버튼의 이벤트 핸들러에서 이 코드를 참조하십시오.
// sets each columns headerName property
setHeaderNames() {
var columnDefs = this.gridApi.getColumnDefs();
columnDefs.forEach(function(colDef, index) {
colDef.headerName = "C" + index;
});
this.columnDefs = columnDefs;
}
// clears each columns headerName property
removeHeaderNames() {
var columnDefs = this.gridApi.getColumnDefs();
columnDefs.forEach(function(colDef, index) {
colDef.headerName = undefined;
});
this.columnDefs = columnDefs;
}
바닐라 JS
데모를 참조해 주세요.
바닐라 JS를 사용하는 경우 JavaScript에는 반응성 데이터에 대한 내장 메커니즘이 없기 때문에 열 정의를 애플리케이션 내의 속성에 바인딩할 수 없습니다. 메서드 ag-Grid API를 합니다.setColumnDefs()
을 사용법
인스턴스에 하려면 ag-Grid를 합니다.setColumnDefs
API, api 、 새 、 api 、 api api api api api api api 。
- 이전에 존재하지 않았던 열이 ag-Grid 인스턴스에 추가됩니다.
- 새 집합에 포함되지 않은 열은 ag-Grid 인스턴스에서 제거됩니다.
"선수 열 포함" 및 "선수 열 제외" 버튼의 이벤트 핸들러에서 이 코드를 참조하십시오.
// removes athlete column
function onBtExcludeAthleteColumn() {
gridOptions.api.setColumnDefs(colDefsAthleteExcluded);
}
// adds athlete column
function onBtIncludeAthleteColumn() {
gridOptions.api.setColumnDefs(colDefsAthleteIncluded);
}
컬럼 메서드를 ag-Grid API 메서드라고 .getColumnDefs()
그리드의 현재 열에 대한 참조를 가져옵니다.열 위에 한 후 호출합니다.setColumnDefs(colDefs)
갱신된 컬럼을 전달합니다.
그런 다음 ag-Grid는 기존 열을 ag-Grid 인스턴스의 열과 일치시키고 변경된 열을 업데이트합니다.
"Set HeaderNames" 및 "Remove HeaderNames" 버튼의 이벤트 핸들러에서 이 코드를 참조하십시오.
// sets each columns headerName property
function setHeaderNames() {
var columnDefs = gridOptions.api.getColumnDefs();
columnDefs.forEach(function(colDef, index) {
colDef.headerName = "C" + index;
});
gridOptions.api.setColumnDefs(columnDefs);
}
// clears each columns headerName property
function removeHeaderNames() {
var columnDefs = gridOptions.api.getColumnDefs();
columnDefs.forEach(function(colDef, index) {
colDef.headerName = undefined;
});
gridOptions.api.setColumnDefs(columnDefs);
}
웹 사이트의 블로그 투고 전문을 읽거나 문서를 참조하여 ag-Grid를 사용하여 구현할 수 있는 다양한 시나리오를 확인하십시오.
Ahmed Gadir | 개발자 @ ag-Grid
언급URL : https://stackoverflow.com/questions/31743534/angular-grid-ag-grid-columndefs-dynamically-change
'source' 카테고리의 다른 글
서버 측 앱 인증에 대한 Google+ 로그인 기능이 작동하지 않습니다. (0) | 2023.02.10 |
---|---|
플라스크와 함께 Create-React-App으로 만든 프런트 엔드를 제공합니다. (0) | 2023.02.10 |
확인란 선택 시 ng-model을 사용하여 배열 생성 (0) | 2023.02.10 |
system.net을 사용하여 json 응답을 얻는 방법.웹 요청은 c#에 있습니까? (0) | 2023.02.10 |
클릭 시 앵글을 사용하여 텍스트 입력 지우기JS (0) | 2023.02.10 |