Query forms and query buttons
javascript/css files
- mvcct.odata.js
- mvcct.controls.query.js
Asp.net Core Mvc Controls Toolkit offers friendly user interfaces to issue queries in
OData format to the server. More specifically, the query
tag helper
generates query windows the user may open with toolbar buttons, and the query-inline
tag helper
generates in-line query forms.
Common attributes of query
and query-inline
tag helpers
- type: QueryWindowType (enum: Filtering, Sorting, Grouping, Back)
-
Obligatory. Specifies the query functionality of the window: Filtering, Sorting, Grouping.
Often this is the only property used for the
query
tag helper since all other settings are inherited from the query button ancestor tag helper. The Back value is adequate just for buttons. It specifies a button to return back to the previous query. Back buttons work only when queries get results with ajax . Changing page is not considered a different query so the back button doesn't go back to a previous page but directly to the last page visited of the previous query. This way, for instance, user may group data, click a detail button, browse all detail pages, and then with a single click he/she may return to the grouping page, and possibly select a different detail. - row-collection-name: string
-
A name that identifies the collection of RowTypes that must be used to generate
the query window. In the case of the
query
tag helper RowTypes are inherithed from the control where the query buttons are placed in, and this attribute may be used to override them. In the case of thequery-inline
tag helper this attribute is obligatory and must contain the name of a RowType collection exported by the control containing the queried items(for instance a grid) with therows-cache-key="RowTypeCollectionName"
attribute. - window-template: string
-
The optional name of a partial view containing the layout template for the query window.
The default layout template for the
query-inline
tag helper is this one, while the default template for thequery
tag helper is this one. - override-url: string, override-ajax-id: string
-
Usually, queries are issued to an url specified in the
QueryDescription
object containing the current query. If the url is followed by some spaces and then by an identifierid
, an ajax call is issued and the html returned by the server replaces the content of the html node whose id isid
.
These settings override the settings contained in theQueryDescription
object. - source-for: ModelExpression
- This attribute makes sense only for client providers (at moment no query provider is available) that query data from a JavaScript array. It is the property containing the array to query.
- client-custom-processor-for: ModelExpression
- This attribute makes sense only for client providers (at moment no query provider is available). The name of a property containing a setting object that specifies a custom processing of the data received by the server.
Important: localization of all strings in the query windows is performed
with the type contained in the RowType localization-type
attibute of the main RowType
used to render the window fields. Thus, for instance, if the RowType comes from a grid they are localized
with the localization-type
specified in the grid tag helper (that contains also all information about the main RowType).
query
and query-inline
toolbars
Query windows may contain toolbars. For the query
tag helper toolbars must be defined
together with the toolbars of the tag helper where the query buttons are placed in,
while query-inline
toolbars must be defined as content of the tag helper itself.
The query window default layout templates support the following toolbar types:
LayoutStandardPlaces.HeaderFilter,
LayoutStandardPlaces.FooterFilter,
LayoutStandardPlaces.SubmitBarFilter,
LayoutStandardPlaces.HeaderSorting,
LayoutStandardPlaces.FooterSorting,
LayoutStandardPlaces.SubmitBarSorting,
LayoutStandardPlaces.HeaderGrouping,
LayoutStandardPlaces.FooterGrouping,
LayoutStandardPlaces.SubmitBarGrouping
When at least a submit bar is provided, it is assumed that the submit button is rendered inside that toolbar, so
the default submit and reset buttons are not rendered. Therefore, the developer must provide a button with data-operation="reset-form"
that works as reset button and a button with
data-operation="server-query-filter query/server-query-sorting query/server-query-grouping query"
that
works as submit button.
Where "query" is a placeholder for the name of the property containing the QueryDescription
object.
query
tag helper specific attributes
- button-localization-type: Type
- The type used to localize all query button strings.
- button-text, button-title: string
-
Custom button text and html title. Both default texts and custom texts
are localized with
button-localization-type
. -
- button-icon: string
- Name of a css class containing the definition of a custom button icon.
- button-css: string
- A custom css class for the query button.
- window-header: string
- A custom header for the query window that opens when clicking the query button. Both default headers and the custom header are not automatically localized. Accordingly, the user must provide strings that have already been localized.
- button-template: string
- The optional name of a partial view containing the layout template for the query button. The default layout template is this one.
query-inline
tag helper specific attributes
- asp-for: ModelExpression
-
Obligatory. The property containing the
QueryDescription
object with the current query. - collection-for: ModelExpression
- Obligatory. The property containing the IEnumerable with the result of the query.
- grouping-type: Type
-
Obligatory. The type of the ViewModel containing grouped items. This
type must be either the same ViewModel used for standard items, or a subclass of it
that for each property
PropertyN
whose occurrences might be counted in an aggregation, adds a new property calledPropertyNCount
.