DataTables.NetStandard 0.4.1

There is a newer version of this package available.
See the version list below for details.
Install-Package DataTables.NetStandard -Version 0.4.1
dotnet add package DataTables.NetStandard --version 0.4.1
<PackageReference Include="DataTables.NetStandard" Version="0.4.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add DataTables.NetStandard --version 0.4.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: DataTables.NetStandard, 0.4.1"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install DataTables.NetStandard as a Cake Addin
#addin nuget:?package=DataTables.NetStandard&version=0.4.1

// Install DataTables.NetStandard as a Cake Tool
#tool nuget:?package=DataTables.NetStandard&version=0.4.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

DataTables.NetStandard

This package provides a way to create self-contained DataTable classes for the famous datatables.net jQuery plugin which manage rendering, querying, filtering, sorting and other desireable tasks for you, written in .NET Standard for ASP.NET Core applications with focus on Entity Framework Core. The package is heavily inspired by Laravels (PHP) counterpart yajra/datatables and extensions of said package.

Usage

To create a DataTable, you'll need to create a new class extending the DataTable base class. You only have to provide own implementations for a few methods:

public class PersonDataTable : DataTable<Person, PersonViewModel>
{
    public override IList<DataTablesColumn<Person, PersonViewModel>> Columns()
    {
        return new List<DataTablesColumn<Person, PersonViewModel>>
        {
            // Your DataTable column definitions come here
        };
    }

    public override IQueryable<Person> Query()
    {
        return _dbContext.Persons;
    }

    public override Expression<Func<Person, PersonViewModel>> MappingFunction()
    {
        return p => AutoMapper.Mapper.Map<PersonViewModel>(p);
    }
}

As you can see, a DataTable always requires two models to work. One is used internally to access the underlying data while the other is used to render the results for the response. The dats is mapped using a configurable mapping function. We recommend using the great AutoMapper package by initializing the mapper in the Startup.cs and configuring the mapping function in the custom DataTable class as seen above.

// Startup.cs
Mapper.Initialize(m =>
{
    m.AddProfile<DefaultMappingProfile>();

    // Or, to pass some dependencies to the mapping profile (when using AutoMapper)
    m.AddProfile(new DefaultMappingProfile(services.BuildServiceProvider().GetService<IViewRenderService>()));
});

// PersonDataTable.cs
public override Expression<Func<Person, PersonViewModel>> MappingFunction()
{
    return p => AutoMapper.Mapper.Map<PersonViewModel>(p);
}

Of course you can also create a base class for all your DataTables with a generic implementation of the mapping provider function if you don't want to define the same function over and over again.

For a quick start, we recommend having a look at the PersonDataTable example in the Sample project. It is a basic example showcasing what is possible with this package and how easy it is to setup a new DataTable.

After defining a custom DataTable, you only have to register it in your service container, inject it to your controller and pass it to the view via the ViewBag. In the view, you can then render the HTML and the JavaScript for your table. Rendering the global defaults for your DataTables is optional:

// MyTable.cshtml
@{
    var DataTable = (MyCustomDataTable)ViewBag.MyCustomDataTable;
}

<div class="table-responsive">
  @Html.Raw(DataTable.RenderHtml())
</div>

@section Scripts {
    $(document).ready(function () {
        @Html.Raw(DataTable.RenderScript(Url.Action("TableData", "MyController")))
    });
}

// _Layout.cshtml (Optional)
<script type="text/javascript">
    @Html.Raw(DataTables.NetStandard.Configuration.DataTablesConfigurationBuilder.BuildGlobalConfigurationScript())
</script>
@RenderSection("Scripts", required: false)

NuGet packages (1)

Showing the top 1 NuGet packages that depend on DataTables.NetStandard:

Package Downloads
DataTables.NetStandard.Enhanced

Enhanced features for the self-containing DataTable classes for the datatables.net jQuery plugin that manage rendering, querying, filtering, sorting and other desireable tasks for the user.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.1.0 1,318 7/10/2020
1.0.0 239 7/9/2020
0.5.2 248 6/8/2020
0.5.1 310 12/10/2019
0.5.0 667 5/2/2019
0.4.1 347 4/1/2019
0.4.0 345 4/1/2019
0.3.0 375 3/6/2019
0.2.0 3,161 2/16/2019
0.1.0 363 2/15/2019