DataTables.NetCore
0.1.0
dotnet add package DataTables.NetCore --version 0.1.0
NuGet\Install-Package DataTables.NetCore -Version 0.1.0
<PackageReference Include="DataTables.NetCore" Version="0.1.0" />
paket add DataTables.NetCore --version 0.1.0
#r "nuget: DataTables.NetCore, 0.1.0"
// Install DataTables.NetCore as a Cake Addin #addin nuget:?package=DataTables.NetCore&version=0.1.0 // Install DataTables.NetCore as a Cake Tool #tool nuget:?package=DataTables.NetCore&version=0.1.0
DataTables.NetCore
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 implementing the IDataTable
interface. There is an abstract base class called DataTable
available for you to inherit from, providing default implementations for most methods. You only have to provide own implementations for a few methods:
public class PersonDataTable
: DataTable<Person, PersonViewModel>, IDataTable<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.NetCore.Configuration.DataTablesConfigurationBuilder.BuildGlobalConfigurationScript())
</script>
@RenderSection("Scripts", required: false)
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Microsoft.AspNetCore.Mvc.Razor (>= 2.2.0)
- Newtonsoft.Json (>= 12.0.1)
- Scriban (>= 1.2.9)
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
0.1.0 | 2 | 2/15/2019 |