The first time I looked at the ASPxGridView it was a little overwhelming to look at the sheer number of properties this one Web control had. I am not easily overwhelmed, but if memorization of properties and sub-properties were an objective, my not so rubbery old brain might have grappled with the task. However, since no one require that you or I memorize "stuff" the ASPxGridView is a powerful grid. I think of Developer Express' grid in two ways: its a grid, and when I need a grid its the one I want to us.
Instead of memorize dozens of properties think of the ASPxGridView as a grid capable of sorting, searching, grouping, summarizing, nesting, and using Ajax for performance improvements. Then, when you want to perform a task focus on the properties and sub-properties associated with the task at hand. This approach to capabilities makes the ASPxGridView seem much more manageable, less complex. Suppose for example you want to use the filtering capability of the filtering control and explain how filter groups work then focus on that information and "temporarily" tune out the other features. (Of course, don't permanently tune out the other features because those other features make our grid the grid to own.) Let's walk through using the filtering control and how the filter groups work.
Enabling the Filter Bar/Control for the ASPxGridView
With the ASPxGridView you can get a grid on a form, connect the grid to a data source, put data in it and enable filtering in about 7 steps and no lines of code (that you have to write). To wire up a grid with some data to explore filter groups follow these steps (Or, if you know how to get the basic grid plumbing wired up skip to the next section):
- Create a new Web application
- Add an ASPxGridView to the default <div> tag section of the Default.aspx page
- Click the grid's Task menu, click Choose Data Source, and pick <New data source> from the drop down
- In the Data Source Configuration Wizard choose Database as the source type to add a SqlDataSource
- Use the Northwind database (or any other you'd like), pick the Orders table, and complete the wizard
- Click on the ASPxGridView and press F4 to display the Properties window
- Expand the Settings property and change ShowFilterBar to Visible and ShowHeaderFilterButton to true
Run the sample Web application. The results should look something like Figure 1 if you use the Northwind Orders table with the options listed above. To display the filter control click the Create Filter link shown in the lower left hand side of Figure 1.

Figure 1: The ASPxGridView with settings to display the Filter Bar (bottom left link) and the header filter button (drop down button right of each column header).
Defining Search Criteria Using the Filter Control
Click the Create Filter link to display the Filter Builder control (see Figure 2). The Filter Builder supports visually building a search (or filter criteria) using a dynamic, model dialogue. By default the Filter Builder is empty containing the logical operator link and the (+) button dhow in Figure 2. Click the logical operator link to choose between And, Or, Not And, and Not Or, or to Add a Group or Condition or Remove conditions. Click the (+) button to add a condition to the group below the operator.
Figure 2: The Filter Builder control shown in the foreground.
The logical operator defines how every predicate in the group is chained together. The predicates are the filter conditions: [Order ID] Is greater than 9000, etc. Each predicate added to the group becomes part of a compound predicate evaluated with the group's operator, in the example And. You can add addition sub-groups and pick a logical operator for the sub-group. If the sub-group uses the same operator as the parent group then the sub-group operator will not be repeated and the conditions (or predicates) will be elevated to parent group. The basic rules for organizing conditions/predicates is based roughly on discrete mathematics (or the propositional and predicate calculus).
Figure 3: A group withe And operator and two conditions/predicates.
Think "Order ID Is greater than 9000" as predicate A, and "Employee ID Is greater than or equal to 5" as predicate B. The filter control thinks of the filter as "A And B", that is a logical-and operation between A and B. If you add additional conditions/predicates at this level they are and'd also. Suppose you add an Or group and a condition "Employee ID Equals 6" (which we will call predicate C). Any other conditions added to the Or group are Or'd with C, but these groups make up a compound group and the compound group (right now with only C in it, refer to Figure 4) is and'd to A and B. Thus the actual filter is "A AND B AND C". If you added D to the Or group then the filter would be (A AND B) AND (C OR D).
Figure 4: Since there is only one condition after the Or the three test conditions are And'd together; the sub-group "Employee ID Equals 6" would be Or'd with any thing else in its sub-group, but all of the conditions would be And'd based on the outer logical operator And.
Logical operators only apply to items in the group whether they are singular or compound conditions. If you mean
Employee ID equals 6 Or (Order ID Is greater than 9000 And Employee ID Is greater than or equal to 5)
which would yield an Order ID for Employee 6 then create the Or group first and the And sub-group (see Figure 5).
Figure 5: The correct way to get Employee ID 6 for orders below 9000 is to create an Or condition for Employee ID 6 and And the sub-group with the restrictive conditions.
The best part of all of this is that the grid and the filter builder use Ajax, so your users will be able to experiment with the filter builder quickly and easily to get the result set intended. Non-technical users may have trouble with logical operators period. For these uses consider using the header filter or header menu filters. The latter two filter-styles aren't as powerful, but to some extent it depends on your audience. Developer Express gives you the power to choose between filtering options without writing a lot of code.