Users List
User Directory Users & Roles Updated: 25 Feb 2026 Tags: users list, user directory, search, paging, sorting, UsersList.aspx, manage access, invite user
Users List — Help & User Guide
Page: Users/UsersList.aspx
Overview
- Purpose: displays the site-wide user directory, supports searching, paging and sorting, and links to per-user access management.
- Files:
Users/UsersList.aspx (markup) and UsersList.aspx.cs (code-behind).
Quick start (end user)
- Search: type a name in the TxtSearch box and press Enter or click BtnSearch.
- Page through results: use the grid pager (15 rows per page).
- Sort: click sortable column headers (server-side sort).
- Manage a user: click the Manage Access link in the row (ensure navigation is wired server-side).
- Invite a user: click + Invite User to go to the Invite User page.
Primary UI elements
Header + Search
- Page title: Users List
- Search input: TxtSearch and search button BtnSearch
- Invite link: + Invite User → InviteUser page
Grid
- Grid control: GridUsers (paging, sorting, templates)
- Visible columns:
- USER_FIRSTNAME
- USER_LASTNAME
- Email (template field lblEmail)
- Status (template field lblStatus)
- Created (USER_DATECREATED formatted
dd/MM/yyyy) - Row action:
- lnkView (text “Manage Access”) — typically wired with
NavigateUrl in code-behind
Empty state
- LabelNoData shows “No users found.” when grid has no rows
Keyboard and client behavior
- Enter key handler: page attaches Enter → click BtnSearch (note: duplicate
window.onload blocks can override each other in some browsers). - Focus: TxtSearch is auto-focused on load.
- Recommendation: combine duplicate onload handlers into a single initializer and guard focus/handler logic by checking element visibility.
Server-side handlers to review (code-behind)
- BtnSearch_Click — perform search and rebind GridUsers
- GridUsers_PageIndexChanging — handle paging and rebind
- GridUsers_Sorting — apply sorting and rebind
- GridUsers_RowCreated, GridUsers_RowDataBound — populate template fields (lblEmail, lblStatus) and per-row formatting
- Ensure lnkView.NavigateUrl is set inside GridUsers_RowDataBound if needed
Troubleshooting checklist
Search not responding
- Confirm BtnSearch_Click exists and the page posts back
- Check browser console for JS errors preventing the button click
Grid empty
- Confirm server returns data for query and grid is rebound after search, paging or sorting
- Verify LabelNoData visibility logic
Sorting or paging misbehaves
- Ensure the data source supports server-side sorting/paging or you re-query with correct parameters
Duplicate onload scripts cause missing focus or handlers
- Remove duplicate
window.onload definitions and use a single DOMContentLoaded or a single script block at page end
Security & validation notes
- Authorize access to this page and all server handlers
- Parameterize queries — never concatenate raw input into SQL
- Validate search input server-side (length, allowed characters) to avoid injection and expensive queries
- Avoid exposing sensitive internal IDs unless necessary
Accessibility & UX suggestions
- Add
aria-live="polite" to LabelNoData or an error panel to announce changes - Ensure lnkView has descriptive
title / aria-label (e.g., “Manage access for {First Last}”) - Make focus visible for keyboard navigation and consider moving focus to the grid after a search
What to include when contacting support
- search term used
- approximate time
- screenshot of any error message (if shown)
- browser used and steps taken
← Back to Help Centre