I have created an ASP.NET controls pack that I'm using on a daily basis. The pack includes:
||A Button that supports a Confirmation message before submitting a form.
||An Image that allows you to set the MouseOverImageUrl property.
||An ImageButton that supports a Confirmation message before submitting a form and a MouseOverImageUrl.
||A CheckBox that renders itself as an image either checked or unchecked. It also supports MouseOverImageUrl for both states.
||An ObjectDataSource that supports build in sorting and filtering of returned objects.
||A CompareValidator that supports displaying error messages as an image.
||A RequiredFieldValidator that supports displaying error messages as an image.
||A parameter that can be used in DataSource controls parameter collections such as SelectParameters. It allows you to get parameters from properties of a page.
||A parameter that can be used in DataSource controls parameter collections such as SelectParameters. It allows you to get parameters from properties of a nearest TemplateControl.
I find those control very helpful on a daily basis and hope you will like it also. Note also that some of them I have described earlier but now I provide them as a one download with a full source code. It is available here: Controls.zip (50.7 KB).
Using most of the controls should be obvious. The most complicated one is the MyObjectDataSource. Mostly I have described it in my previous articles about this control. I have added a filtering feature by specifying FilterParameters on the data source control. There are two options: you can either use the internal filter mechanism which will filter values for you or by providing an additional parameter to a select method that is used for selecting objects. This additional parameter should be of type Dictionary<string, object> where the key is the name of the property to filter. Working with internal filter requires almost no code for example using ControlParameter:
<asp:ControlParameter Name="Role.Id" ControlID="Role" PropertyName="SelectedValue" />
Where Name attribute corresponds to a name of the property by which you want to filter and PropertyName corresponds to a property on a control that provides a value to filter by. (I know it my not be very intuitive, but that is what ASP.NET provides and I have been building on top of that). Filtering currently works similar to SQL LIKE command with wildcards before and after the expression.
If you work without internal filter you have the responsibility to filter the collection yourself given the filter parameter to passed to a select method.