# GridItem The **\** component provides a single item in a grid. > **NOTE** > > This component is supported since API version 7. Updates will be marked with a superscript to indicate their earliest API version. ## Child Components Supported ## APIs GridItem() ## Attributes | Name| Type| Description| | -------- | -------- | -------- | | rowStart | number | Start row number of the component.| | rowEnd | number | End row number of the component.| | columnStart | number | Start column number of the component.| | columnEnd | number | End column number of the component.| | forceRebuild(deprecated) | boolean | Whether to re-create the component when it is being built.
This API is deprecated since API version 9. Whether to re-create the component is automatically determined based on the component attributes and child component changes. No manual configuration is required.
Default value: **false**| | selectable8+ | boolean | Whether the current grid item is selectable by the mouse.
**NOTE**
This attribute takes effect only when mouse frame selection is enabled for the parent **\** container.
Default value: **true** | > **NOTE** > > Rules for setting **rowStart**, **rowEnd**, **columnStart**, and **columnEnd**: > > - The valid value range of **rowStart** and **rowEnd** is 0 to the total number of rows minus 1. The valid value range of **columnStart** and **columnEnd** is 0 to the total number of columns minus 1. > > - Settings outside of the valid ranges do not take effect. > > - In the grid that has both **columnTemplate** and **rowTemplate** set, a grid item takes up the specified number of rows (rowEnd – rowStart + 1) or columns (columnEnd – columnStart + 1), depending on whether **rowStart**/**rowEnd** or **columnStart**/**columnEnd** is set. >- In the grid that has only **columnTemplate** set, a grid item takes up the specified number of columns. > - In the grid that has only **rowTemplate** set, a grid item takes up the specified number of rows. >- In the grid that has neither **columnTemplate** nor **rowTemplate** set, the row and column number attributes do not work. ## Events | Name| Description| | -------- | -------- | | onSelect(event: (isSelected: boolean) => void)8+ | Triggered when the selected state of the grid item changes.
**isSelected**: returns **true** if the grid item is being selected by the mouse; returns **false** otherwise. | ## Example ```ts // xxx.ets @Entry @Component struct GridItemExample { @State numbers: string[] = Array.apply(null, { length: 16 }).map(function (item, i) { return i.toString() }) build() { Column() { Grid() { GridItem() { Text('4') .fontSize(16) .backgroundColor(0xFAEEE0) .width('100%') .height('100%') .textAlign(TextAlign.Center) }.rowStart(1).rowEnd(2).columnStart(1).columnEnd(2) // Set valid row and column numbers. ForEach(this.numbers, (item) => { GridItem() { Text(item) .fontSize(16) .backgroundColor(0xF9CF93) .width('100%') .height('100%') .textAlign(TextAlign.Center) } }, item => item) GridItem() { Text('5') .fontSize(16) .backgroundColor(0xDBD0C0) .width('100%') .height('100%') .textAlign(TextAlign.Center) }.columnStart(1).columnEnd(4) // Set only the column numbers. The layout does not start from the first column. } .columnsTemplate('1fr 1fr 1fr 1fr 1fr') .rowsTemplate('1fr 1fr 1fr 1fr 1fr') .width('90%').height(300) }.width('100%').margin({ top: 5 }) } } ``` ![en-us_image_0000001174582870](figures/en-us_image_0000001174582870.gif)