Event called just before a row is rendered in the data grid. The record to render is already loaded at this point.
This event is useful for injecting content before a row is rendered such as group headers.
This handler is useful for:
- Formatting the entire row with custom styles or CSS classes
- Injecting header rows into the grid
- Formatting HtmlDataGridConfig Columns based on certain conditions
The expression that runs must return a string! Return empty to do nothing, or return a string that returns HTML - typically a
<tr></tr>block that renders for things like headers, that render before the row.
To set up a function handler use
OnBeforeRowRender like this:
select * from albums into cursor TQuery loConfig = CREATEOBJECT("HtmlDataGridConfig") *... other configuration settings *** Note you can pass loConfig (always!!!) to your function loConfig.OnBeforeRowRender = "Process.HighlightAlbumRowByYear(loConfig)" HtmlDataGrid("TQuery",loConfig)
You then implement a method the method you referenced - typically on the Process class, but it can be any FoxPro function or class method as long as it's in scope.
This method creates custom styling on the row using the
FUNCTION HighlightAlbumRowByYear(loConfig) lnYear = TQuery.Year && you can access the iterating cursor *** figure out some condition if (lnYear > YEAR(Date()) - 10) loConfig.RowAttributeString = [ class="highlight" ] ELSE loConfig.RowAttributeString = "" ENDIF *** optionally return a string to inject HTML before the row RETURN ""
Note that the full expression is provided in quotes and that any objects accessed or passed must be in scope. To get a reference to the
HtmlDataGridConfig object in the handler method pass in loConfig as a parameter (regardless of the name you use!). Note that the active cursor/alias will be active when the row is rendered so you can access the cursor as needed in the handler code.
*** pcLastCompany - PRIVATE string expected to exist PROTECTED FUNCTION ShowHoursBeforeRowRender(loConfig) LOCAL lcHtml lcHtml = "" && Return empty if not matched *** Check if the company in the data row has changed - if it has write out a header row IF pcLastCompany # Client lcHtml = [<tr class="groupheader"><td colspan="6"><a href="showclient.wwd?id=] + custno + [">Client + [</a></td></tr>] + CRLF pcLastCompany = Client ENDIF RETURN lcHtml ENDFUNC
Return a string with the HTML to render before the row is rendered or "" to render nothing
The expression can pass the
loConfig object as a parameter to get the wwDataGridConfiguration instance and all of its support properties.
See also:Class HtmlDataGridConfig
Comment or report problem with topic