This is how I set up my search form:
1. All filter fields on my form have an attribute called "filter-field". This makes it easier to clear all as you will see in step 3.
filter_field.png
2. In the form's Custom Code:
Code: Select all
// Add an event listener for all filter fields and if the user pressed the "Enter" key, apply the search
$("[filter-field]").each(function() {
$(this).enterKey(function(e) {
applySearch();
});
});
function applySearch() {
var frame = $("#your_iframe_object_id")[0].contentWindow; // <--- Replace your_iframe_object_id with your iframe object id
// Set Hash Cookies (HK) for all filter fields:
// Example: Set HKs for Text fields
frame.nuSetProperty('filter_adr_last_name', adr_last_name.value);
frame.nuSetProperty('filter_adr_first_name', adr_first_name.value);
frame.nuSetProperty('filter_adr_company', adr_company.value);
// Set HKs for Boolean fields
frame.nuSetProperty('filter_adr_active', nuGetValue('adr_active') ? '1' : '');
frame.nuGetBreadcrumb();
}
3. Add a "Reset filter" button with an onclick event:
Code: Select all
$("[filter-field]").val(''); // empty all filter fields
applySearch();
4. iFrame Browse SQL:
5. iFrame BB (Before Browse) PHP Code:
Code: Select all
$filter = ' AND (1 = 1) ';
setFilter($filter, 'filter_adr_first_name', 'adr_first_name');
setFilter($filter, 'filter_adr_last_name', 'adr_last_name');
setFilter($filter, 'filter_adr_adr_company', 'adr_adr_company');
setFilter($filter, 'filter_adr_active', 'adr_active');
function setFilter(&$filter, $filterName, $columnName) {
$value = nuGetProperty($filterName);
if ($value != '') $filter .= " AND $columnName LIKE '%$value%' ";
}
$create = "CREATE TABLE #TABLE_ID# ";
$select = "
SELECT
address_id,
adr_first_name,
adr_last_name,
adr_company,
adr_active
FROM address
WHERE (1 = 1) -- your where clause, if there is any
" . $filter;
// To output the SQL to nuDebug Results:
// nuDebug($select);
nuRunQuery($create . $select);
You do not have the required permissions to view the files attached to this post.