OnSearchPartFilterCompute Event
Arguments
- ePointer
A dot variable with the following properties:
- tmplPointer
The grid component definition
- rtcPointer
Run-time calculations (allows you to pass data to other event handlers). The e.rtc variable has the following properties:
- Filter_SearchPartCharacter
The filter computed from submitted data in the Search Part
- Parameters_SearchPartCharacter
The parameter value for arguments in the filter
- SearchDataSubmittedPointer
Search data submitted.
Description
This event fires after user has clicked Submit to submit the Search part, and after the Search Filter has been computed, but before the Search is executed. It allows you to modify the Search Filter.
Discussion
The OnSearchPartFilterCompute event can be used to modify the search filter before it is executed. You can modify the value of e.rtc.filter_SearchPart and e.rtc.Parameters_SearchPart
For example:
e.rtc.filter_searchPart = "lastname = :whatLastName" e.rtc.parameters_searchPart = e.SearchDataSubmitted.Lastname+"|||C|whatLastName"
The .parameters_searchPart variable is only needed if the .filter_SearchPart variable uses arguments. .parameters_searchPart is a CR-LF delimited string with one entry for each argument used in the filter. It is of the form:
parameterValue|||Type|argumentName
Where Type is a one character Xbasic data type (e.g. C,N,E,D,T,S, or L) of the field you are searching.
If your data source is DBF, then your .filter_searchPart must use Xbasic syntax.
If your data source is SQL, then your .filter_searchPart must use SQL syntax.
The OnSearchPartFilterCompute event is often used in conjunction with putting variables into the Search Part form.
To put a variable in the Search Part, configure one of the search fields to use a 'Freeform layout'. In the Freeform template, enter HTML similar to example below which creates a variable called 'myvar1' in the Search Part:
<input id="{grid.componentname}.S.MYVAR1" size="40" maxlength="200" class="GlassOliveInput" type="text" name="S.MYVAR1" value="" />
In your event handler, you can refer to this value in myvar1 as:
dim myvar1 as c = e.searchDataSubmitted.myvar1
Sending Javascript to the Client
The e object also contains a pointer to the AjaxResponses array, which can be used to send Javascript to the client. For example:
if e.searchDataSubmitted.Company = "" then e.cancel = .t. dim aa as p aa = e.rtc.A_AjaxResponses i = aa.append() aa[i].text = "alert('Search Expression was recomputed.');" aa[i].id = 100 'the order in which the Ajax responses are sent to the browser end if
Setting State Variables
You can also set state variables in this event. The value of any state variables will be available in all subsequent ajax callbacks (in the e.__si2 object).
To set a state variable:
e._state.myvar1 = "value1" e._state.myvar2 = "value2"