Con Ignite UI for Angular Grid, puede seleccionar datos fácilmente mediante el uso de una variedad de eventos, una API enriquecida o con interacciones simples del mouse como la selección única.
最速で機能豊富な Angular Data Grid は、ページング、ソート、フィルタリング、グループ化、PDF および Excel へのエクスポートなどの機能を提供します。究極のアプリ構築エクスペリエンスとデータ操作に必要なすべてが揃っています。
El siguiente ejemplo demuestra los tres tipos de comportamiento de selección de celdas de Grid. Utilice los botones a continuación para habilitar cada uno de los modos de selección disponibles. Se proporcionará una breve descripción de cada interacción de botón a través de un cuadro de mensaje de snackbar.
<spanclass="button-group-wrapper"><igx-buttongroup [values]="selectionModes" (selected)="selectCellSelectionMode($event)"></igx-buttongroup></span><divclass="sample-wrapper"><divclass="grid-wrapper"><igx-grid [igxPreventDocumentScroll]="true" #grid [data]="data" [height]="'550px'" [cellSelection]="selectionMode"
(rangeSelected)="onRangeSelected()"
(selected)="onCellSelected($event)"
><igx-column [field]="'ProductID'"></igx-column><igx-column [field]="'ProductName'"></igx-column><igx-column [field]="'UnitsInStock'" [dataType]="'number'"></igx-column><igx-column [field]="'UnitPrice'" [dataType]="'number'"></igx-column><igx-column [field]="'Discontinued'" [dataType]="'boolean'"></igx-column><igx-column [field]="'OrderDate'" [dataType]="'date'"></igx-column></igx-grid></div><divclass="log-wrapper"><divclass="selected-data-area"><divclass="logContainer"><divclass="highlight"><span>Events execution sequence</span><buttonclass="clearBtn"igxButton="flat" (click)="clearLog()"><igx-icon>clear</igx-icon><span>Clear log</span></button></div><hr /><div #loggerclass="logger"></div></div></div></div></div><igx-snackbar #snackbaractionText="Got it. Thanks!" (clicked)="snackbar.close()"><divclass="container"><igx-icon>notification_important</igx-icon>
@if (selectionMode === 'multiple') {
<ul><li><b>This is the default selection behavior.</b></li><li>Click on a cell and while pressing the mouse key perform drag action.
</li><li>Select a cell and press Shift + Arrow down key, this will start range selection as well.</li></ul>
}
@if (selectionMode === 'single') {
<ul><li><b>Now you can select only one cell within the grid.</b></li><li>On single cell click the previous selection state will be cleared.</li><li>The mouse drag will not work and instead of selecting a cell, this will make default text selection.</li></ul>
}
@if (selectionMode === 'none') {
<ul><li><b>Now you are unable to select a cell while interacting with grid UI.</b></li><li>If you need to select a cell, you can use the grid API methods.</li></ul>
}
</div></igx-snackbar>html
¿Te gusta esta muestra? Obtenga acceso a nuestro kit de herramientas de Ignite UI for Angular completo y comience a crear sus propias aplicaciones en minutos. Descárgalo gratis.
La propiedad rowSelection le permite especificar las siguientes opciones:
ninguno: la selección de filas estaría deshabilitada para la cuadrícula
single: la selección de solo una fila dentro de la cuadrícula estaría disponible
múltiple: la selección de varias filas estaría disponible usando los Row selectors, con una combinación de teclas como Ctrl + clic, o presionando la tecla de espacio una vez que una celda esté enfocada.
La propiedad cellSelection le permite especificar las siguientes opciones:
ninguno: la selección de celdas estaría deshabilitada para la cuadrícula
único: la selección de solo una celda dentro de la cuadrícula estaría disponible.
múltiple: actualmente, este es el estado predeterminado de la selección en la cuadrícula. La selección de varias celdas está disponible arrastrando el mouse sobre las celdas, después de hacer clic continuamente con el botón izquierdo del mouse.
Usando el evento contextMenu puedes agregar un menú contextual personalizado para facilitar tu trabajo con IgxGrid. Con un clic derecho en el cuerpo de la grilla, el evento emite la celda en la que se activa. El menú contextual funcionará con la celda emitida.
Si hay una selección multicelda, pondremos lógica, que comprobará si la celda seleccionada está en el área de selección multicelda. Si es así, también emitiremos los valores de las celdas seleccionadas.
Básicamente la función principal se verá así:
publicrightClick(eventArgs: any) {
// Prevent the default behavior of the right click
eventArgs.event.preventDefault();
this.multiCellArgs = {};
// If we have multi-cell selection, check if selected cell is within the rangesif (this.multiCellSelection) {
const node = eventArgs.cell.selectionNode;
const isCellWithinRange = this.grid1.getSelectedRanges().some(range => {
if (node.column >= range.columnStart &&
node.column <= range.columnEnd &&
node.row >= range.rowStart &&
node.row <= range.rowEnd) {
returntrue;
}
returnfalse;
})
// If the cell is within a multi-cell selection range, bind all the selected cells dataif (isCellWithinRange) {
this.multiCellArgs = { data: this.multiCellSelection.data };
}
}
// Set the position of the context menuthis.contextmenuX = eventArgs.event.clientX;
this.contextmenuY = eventArgs.event.clientY;
this.clickedCell = eventArgs.cell;
// Enable the context menuthis.contextmenu = true;
}
typescript
El menú contextual tendrá las siguientes funciones:
Copia el valor de la celda seleccionada.
Copiar la fila de datos de la celda seleccionada
Si la celda seleccionada está dentro de un rango de selección de varias celdas, copie todos los datos seleccionados
Seleccione varias celdas y presione el botón right mouse. Aparecerá el menú contextual y después de seleccionar Copy cells data los datos seleccionados aparecerán en el cuadro vacío de la derecha. El resultado es:
El uso de Grid con Selección habilitada en IE11 requiere la importación explícita de la matriz polyfill en polyfill.ts de la aplicación angular. IE11 ya no es compatible a partir de la versión 13.0.0.
import'core-js/es7/array';
typescript
Cuando la cuadrícula no tiene un conjunto primaryKey y los escenarios de datos remotos están habilitados (al paginar, ordenar, filtrar y desplazar solicitudes de activación a un servidor remoto para recuperar los datos que se mostrarán en la cuadrícula), una fila perderá el siguiente estado después de un dato. solicitud completa: