Back to Devexpress

ASPxGridView.DataColumns Property

aspnet-devexpress-dot-web-dot-aspxgridview-8f9dc7c0.md

latest7.0 KB
Original Source

ASPxGridView.DataColumns Property

Gets the collection of all data columns within the ASPxGridView control.

Namespace : DevExpress.Web

Assembly : DevExpress.Web.v25.2.dll

NuGet Package : DevExpress.Web

Declaration

csharp
public ReadOnlyGridColumnCollection<GridViewDataColumn> DataColumns { get; }
vb
Public ReadOnly Property DataColumns As ReadOnlyGridColumnCollection(Of GridViewDataColumn)

Property Value

TypeDescription
ReadOnlyGridColumnCollection<GridViewDataColumn>

A collection of data columns in an ASPxGridView.

|

Remarks

The DataColumns property provides access to a collection that contains data columns of the ASPxGridView control. This collection is read-only, since individual columns can be manipulated (added or removed) at the level of a grid control (ASPxGridView.Columns). The collection obtained via the DataColumns property allows you to easily iterate through data grid columns and access any required column identified by its name, field name, or caption.

Example

In some cases, when the default filter row editor’s functionality is not enough, you can provide custom filter cell content using the GridViewColumn.FilterTemplate.

In this example, a default cell editor is replaced with the ASPxGridLookup control. The control’s ASPxClientEdit.ValueChanged client-side event is used to send a callback to the server side, invoking the grid’s ASPxGridView.CustomCallback event. In the event handler, a filter criteria is created and applied to the grid using the ASPxGridView.ApplyFilterToColumn method.

View Example

aspx
<head runat="server">
    <title></title>
    <script type="text/javascript">
        function Lookup_ValueChanged(s, e) {
            grid.PerformCallback("FilterByCategories");
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <div style="max-width: 960px">
        <dx:ASPxGridView runat="server" ID="Grid" AutoGenerateColumns="False" DataSourceID="ProductsDataSource"
            ClientInstanceName="grid" OnCustomCallback="Grid_CustomCallback" EnableViewState="false">
            <Columns>
                <dx:GridViewDataTextColumn FieldName="CategoryName">
                    <FilterTemplate>
                        <dx:ASPxGridLookup runat="server" ID="Lookup" AutoGenerateColumns="False" DataSourceID="CategoriesDataSource"
                            KeyFieldName="CategoryID" SelectionMode="Multiple" TextFormatString="{0}">
                            <Columns>
                                <dx:GridViewCommandColumn ShowSelectCheckbox="true" />
                                <dx:GridViewDataTextColumn FieldName="CategoryName" />
                                <dx:GridViewDataBinaryImageColumn FieldName="Picture">
                                    <PropertiesBinaryImage ImageWidth="48" />
                                </dx:GridViewDataBinaryImageColumn>
                            </Columns>
                            <ClientSideEvents ValueChanged="Lookup_ValueChanged" />
                        </dx:ASPxGridLookup>
                    </FilterTemplate>
                </dx:GridViewDataTextColumn>
                <dx:GridViewDataTextColumn FieldName="ProductName" />
                <dx:GridViewDataTextColumn FieldName="ProductSales" />
                <dx:GridViewDataDateColumn FieldName="ShippedDate" />
            </Columns>
            <Settings ShowFilterRow="true" />
        </dx:ASPxGridView>
        <asp:AccessDataSource ID="ProductsDataSource" runat="server" DataFile="~/App_Data/nwind.mdb"
            SelectCommand="SELECT * FROM [ProductReports]" />
        <asp:AccessDataSource ID="CategoriesDataSource" runat="server" DataFile="~/App_Data/nwind.mdb"
            SelectCommand="SELECT * FROM [Categories]" />
        </div>
    </form>
</body>
</html>
csharp
using DevExpress.Data.Filtering;
using DevExpress.Web;

public partial class _Default : System.Web.UI.Page {
    protected void Grid_CustomCallback(object sender, ASPxGridViewCustomCallbackEventArgs e) {
        if(e.Parameters == "FilterByCategories") {
            var column = Grid.DataColumns["CategoryName"];
            var lookup = Grid.FindFilterCellTemplateControl(column, "Lookup") as ASPxGridLookup;
            if(lookup != null)
                Grid.ApplyFilterToColumn(column, CreateCriteria(lookup, column.FieldName));
        }
    }

    protected CriteriaOperator CreateCriteria(ASPxGridLookup gridLookup, string fieldName) {
        var values = gridLookup.GridView.GetSelectedFieldValues(fieldName);
        return values.Count > 0 ? new InOperator(fieldName, values) : null;
    }
}
vb
Imports DevExpress.Data.Filtering
Imports DevExpress.Web

Partial Public Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Grid_CustomCallback(ByVal sender As Object, ByVal e As ASPxGridViewCustomCallbackEventArgs)
        If e.Parameters = "FilterByCategories" Then
            Dim column = Grid.DataColumns("CategoryName")
            Dim lookup = TryCast(Grid.FindFilterCellTemplateControl(column, "Lookup"), ASPxGridLookup)
            If lookup IsNot Nothing Then
                Grid.ApplyFilterToColumn(column, CreateCriteria(lookup, column.FieldName))
            End If
        End If
    End Sub

    Protected Function CreateCriteria(ByVal gridLookup As ASPxGridLookup, ByVal fieldName As String) As CriteriaOperator
        Dim values = gridLookup.GridView.GetSelectedFieldValues(fieldName)
        Return If(values.Count > 0, New InOperator(fieldName, values), Nothing)
    End Function
End Class

See Also

Columns

Bands

Grid View

ASPxGridView Class

ASPxGridView Members

DevExpress.Web Namespace