In my radgrad I am showing/hiding filter options depending on which filter is clicked on by utilizing the FilterMenuShowing client side function. The problem is it always remembers the last selection. So if in filter A I hide "IsNull", then "IsNull" will also be hidden when I click on Filter B after clicking Filter A. However, if I click Filter B first, "IsNull" is shown. Curiously, if I click Flilter A, then Filter B TWICE, then it works as expected. Why is it remembering the last set of filter options, and how can I fix this?
The following is my code:
function filterMenuShowing(sender, eventArgs) {
var menu = eventArgs.get_menu();
var items = menu._itemData;
var i = 0;
while (i < items.length) {
var arrMenuOptions = ['GreaterThan', 'LessThan', 'IsEmpty', 'IsNull', 'NotIsEmpty', 'NotIsNull', 'GreaterThanOrEqualTo', 'LessThanOrEqualTo', 'Between', 'NotBetween'];
var filterOption = items[i].value;
if (arrMenuOptions.contains(filterOption)) {
var item = menu._findItemByValue(filterOption);
if (item) {
var columnName = eventArgs.get_column()._element.UniqueName;
if (columnName == "JobNumber" && (filterOption == "GreaterThan" || filterOption == "LessThan")) {
item._element.style.display = "";
} else if ((columnName == "InitialDate" || columnName == "FinalDate") && (filterOption == "Between" || filterOption == "NotBetween" || filterOption == "IsNull" || filterOption == "NotIsNull" || filterOption == "IsEmpty")) {
item._element.style.display = "";
} else if ((columnName == "JobDescription" || columnName == "JobCategory" || columnName == "JobType") && (filterOption == "IsEmpty" || filterOption == "NotIsEmpty")) {
item._element.style.display = "";
} else {
item._element.style.display = "none";
}
}
}
i++;
}
}
The following is my code:
function filterMenuShowing(sender, eventArgs) {
var menu = eventArgs.get_menu();
var items = menu._itemData;
var i = 0;
while (i < items.length) {
var arrMenuOptions = ['GreaterThan', 'LessThan', 'IsEmpty', 'IsNull', 'NotIsEmpty', 'NotIsNull', 'GreaterThanOrEqualTo', 'LessThanOrEqualTo', 'Between', 'NotBetween'];
var filterOption = items[i].value;
if (arrMenuOptions.contains(filterOption)) {
var item = menu._findItemByValue(filterOption);
if (item) {
var columnName = eventArgs.get_column()._element.UniqueName;
if (columnName == "JobNumber" && (filterOption == "GreaterThan" || filterOption == "LessThan")) {
item._element.style.display = "";
} else if ((columnName == "InitialDate" || columnName == "FinalDate") && (filterOption == "Between" || filterOption == "NotBetween" || filterOption == "IsNull" || filterOption == "NotIsNull" || filterOption == "IsEmpty")) {
item._element.style.display = "";
} else if ((columnName == "JobDescription" || columnName == "JobCategory" || columnName == "JobType") && (filterOption == "IsEmpty" || filterOption == "NotIsEmpty")) {
item._element.style.display = "";
} else {
item._element.style.display = "none";
}
}
}
i++;
}
}