Use a select parameter for the ODS to hold the filter variable.
<asp:ObjectDataSource ID="odsResults" runat="server"
OldValuesParameterFormatString="original_{0}" SelectMethod="GetSearchResults"
TypeName="LiftSearchResults" SortParameterName="sortType">
<SelectParameters>
<asp:Parameter Name="liftID" Type="Int32" />
<asp:Parameter Name="sortType" Type="String" />
<asp:Parameter Name="range" Type="Int32" />
</SelectParameters>
</asp:ObjectDataSource>
Data object method:
[DataObjectMethod(DataObjectMethodType.Select, false)]
public List<SearchResultsLift>
GetSearchResults(
int liftID,
string sortType,
int range
)
{
List<SearchResultsLift> returnList =
new List<SearchResultsLift>();
...Code to populate list...
if (range != 0)
returnList = FilterByRange(returnList, range);
returnList = GetListSort(returnList, sortType);
return returnList;
}
Unless the range parameter is explicitly set in the page it returns 0 and all records are returned. GetListSort (not shown) is a sort function.
private List<SearchResultsLift>
FilterByRange(List<SearchResultsLift> filterList, int range)
{
var fList = (from srl in filterList
where
srl.DistanceFromDestination <= range &&
srl.DistanceFromStart <= range
select srl).ToList<SearchResultsLift>();
return fList;
}
}