# Rows

A WireBootstrap data table contains methods for maintaining the objects inside an array of data.  This array can accessed directly via the `Rows` property on a data table.

## Add Rows

The `newRow` method on a data table will return an empty row with the same schema as the existing rows.  Each of the values will be null.

Below `product` and `quantity` values are set on a new row and inserted into the table using the `insert` method.

```javascript
let table = new eb.data.DataTable([ 
    {product: "apples", order: "PRN001", quantity: 10},
    {product: "oranges", order: "PRN002", quantity: 15},
    {product: "apples", order: "PRN003", quantity: 20}    
]);
 
let row = table.newRow();
 
row["product"] = "pears";
row["quantity"] = 30;
 
table.insert(row);
```

The `insert` method on the data table can also take an array of rows and will by default add them to the end of the array of existing rows.  Passing `true` in as the second parameter will add them to the top of the array.

```javascript
let rows = [];

...
 
table.insert(rows, true);
```

## Update Rows

The example below updates the `product` column for all rows in the data table to `jello` using the `update` method.

```javascript
...

table.update("product", "jello");
```

The following example uses custom logic via the `filter` function with `update` to increase all `quantity` rows by 20%.

```javascript
... 
 
table.update("quantity").filter((row) => {
    return row["quantity"] * 1.2;
});
```

## Delete Rows

The example below deletes all rows where `product` is equal to `apples` using the `delete` method.

```javascript
...

table.delete().eq("product", "apples");
```

The example does the same thing using custom logic in the boolean `filter` function.

```javascript
...

table.delete().filter((row) => {
    return row["product"] == "apple";
});
```

For more on maintaining rows in a data table, visit the [DataTables](/wirebootstrap/reference/wire.data/wire.data.datatable.md) reference page.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.wirebootstrap.com/wirebootstrap/working-with-datatables/rows.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
