User Guide

7. Data grid

Chapter 7 of 14 · JiveDB User Guide

The data grid is where you view and edit table rows. It supports finding and replacing text, conditional formatting, several density levels, auto-refresh, export, cell/row editing, and a foreign-key-aware detail panel. This chapter covers all of it, step by step.


1. Opening a table

Double-click a table in the sidebar, or right-click it and choose View Data (see Chapter 3). The table opens as a new tab, with its data loaded into the grid.

The grid toolbar has these controls, left to right: a quick search box ("Search loaded rows..."), Filter, Columns, Find, Format, a density button, Refresh (with an auto-refresh interval next to it), Export, Cell detail, and + Add row.

2. Find and replace

Click Find to open the Find & Replace bar above the grid:

The Find and Replace bar, with a match counter and case-sensitivity toggle
Figure 7.1 — The Find and Replace bar.

3. Conditional formatting

Click Format to open the Conditional formatting dialog, and highlight cells that match a rule with a color:

The Conditional formatting dialog, with two rules: id equals 23, and city equals Da Nang
Figure 7.2 — Adding conditional formatting rules.
  1. Click + Add rule.
  2. Pick a column, type the value to match, and pick one of 5 colors.
  3. Repeat for more rules if you want.

Matching cells are highlighted immediately, and the highlight stays as you scroll or page through the table:

Every row where city equals "Da Nang" highlighted amber, and the row where id equals 23 highlighted red
Figure 7.3 — The grid after applying two conditional formatting rules.

4. Row height (density)

Click the density button in the toolbar to cycle through three row heights: Compact → Normal → Comfortable → Compact, and so on.

5. Auto-refresh

Click the timer icon next to Refresh to have the grid reload automatically on a fixed interval:

The auto-refresh interval dropdown: Off, 5s, 10s, 30s, 60s
Figure 7.5 — Choosing an auto-refresh interval.

Choose Off, 5s, 10s, 30s, or 60s. This is useful while watching a table that another process is actively writing to.

6. Exporting data

Click Export to save the current result to a file, or copy it to the clipboard:

The Export dropdown: Download CSV, Download JSON, Download Excel, Copy CSV
Figure 7.6 — Export options for the current result.

Downloads open your operating system's native Save File dialog, so you choose exactly where the file goes.

Tip: If you have a range of cells selected, the Export menu also offers to export just that selection instead of the whole result.

7. Cell detail and foreign keys

Click Cell detail to open a docked panel at the bottom of the grid, showing full details for the currently selected cell:

The Cell detail panel, showing a foreign key value and its related row from the users table
Figure 7.7 — Cell detail panel, resolving a foreign key to its related row.

The panel always shows the column name, its type, and the raw value. If the column is a foreign key, it also shows:

This is useful both for reading a long or truncated value, and for quickly checking what a foreign key actually points to, without switching tabs.

8. Adding a row

Click + Add row to open the Add new row form:

The Add new row dialog, with one input per column
Figure 7.8 — Adding a new row. One field per column, with its type shown.

Fill in a value for each field (each one shows its column type). Auto-generated columns, such as an auto-increment primary key, are hidden automatically — the database fills them in for you. Click + Add to insert the row, or Cancel to discard it.

9. Selecting cells, columns, and rows

You can select a rectangular range of cells, whole columns, or whole rows. Each selection type has its own right-click menu.

Cell selection — drag across cells, then right-click:

A rectangular block of selected cells, with a right-click menu offering several copy formats
Figure 7.9 — Selecting a range of cells.

Menu items include: Copy selection as TSV, CSV, JSON, INSERT, or UPDATE; Paste (⌘/Ctrl+V); Fill down (⌘/Ctrl+D); Set selection NULL; Form View; Open in editor; Filter by this value; Set NULL; Delete row. The status bar also shows quick statistics for the selection (count, sum, average, min, max).

Column selection — click column headers:

Whole columns selected, with a menu offering sort, filter, hide, and column stats
Figure 7.10 — Selecting whole columns.

Menu items include: copy column names/values/JSON/INSERT/UPDATE; Deselect columns; Set value; Sort ascending/descending; Filter; Hide column; Move left/right; Auto-fit width; Column stats; Freeze up to here.

Row selection — click row numbers:

Several whole rows selected, with a menu offering JSON view and bulk delete
Figure 7.11 — Selecting whole rows.

Menu items include: Deselect row(s); View JSON (see section 13); copy as JSON/INSERT/UPDATE; Delete rows.

10. Paging

Large tables load one page at a time. Two controls at the bottom of the grid manage this:

Rows per page — click the row-count text (bottom-left) to choose a page size:

The Rows per page popover, with preset sizes from 25 to 10000
Figure 7.12 — Choosing how many rows to load per page.

Presets: 25, 50, 100, 200, 500, 1000, 3000, 5000, 10000. You can also type a custom size, up to 10000.

Go to page — click the page indicator (bottom-right) to jump directly to a page number, or use First / Last:

The Go to page popover, with a page number input and First/Last buttons
Figure 7.13 — Jumping directly to a page.

Changing pages clears any active cell/row/column selection, since the selected indexes would otherwise point to different data on the new page.

11. Row mode vs. cell mode editing

The grid has two editing modes, switched with one toggle button in the toolbar:

Click the toggle button to switch between them at any time.

12. Editing a row or a cell

In row mode, double-clicking a row opens Edit row, a form with one labeled field per column, each showing its data type:

The Edit row dialog, with one input per column, including a boolean toggle and a date/time picker
Figure 7.15 — Editing a whole row through its form.

In cell mode, double-clicking a single cell opens the same dialog restricted to just that column:

The Edit dialog restricted to a single field, "line1"
Figure 7.16 — Editing a single cell through the same form, limited to one field.

Click Save to apply your changes, or Cancel to discard them. JiveDB only writes the fields you actually changed, as a single update keyed by the row's primary key — this means a table needs a primary key before you can edit its rows.

13. In-line editing

In addition to modal editing (row mode and cell mode above), you can edit cells directly on the table grid without opening a dialog. Navigate between cells and press Enter to start editing. Once you finish typing a value and press Enter again, the cell enters a "pending" state — marked with a highlight so you always know which changes have not been saved yet:

Three cells shown with a green "pending edit" highlight before being saved
Figure 7.17 — Cells with unsaved, pending edits are highlighted until you save.

You can edit as many cells as you want. Once you're done making changes, press Cmd+Enter (or Ctrl+Enter on Windows/Linux) to save all pending edits at once. This in-line editing mode makes it quick to make bulk changes directly in the table without opening dialogs.

14. Viewing a row as JSON, with foreign keys expanded

Select one or more rows, right-click, and choose View JSON to open the JSON Viewer:

Figure 7.18 — Viewing a row as JSON, expanding a foreign key inline, and copying the result.

In the JSON Viewer:

If you selected multiple rows, the JSON Viewer shows an array of row objects, and you can expand or trim each row's fields independently.