All Projects β†’ ekondur β†’ DatatableJS

ekondur / DatatableJS

Licence: MIT license
Jquery datatable with entity framework using MVC html helper

Programming Languages

C#
18002 projects

Projects that are alternatives of or similar to DatatableJS

Revogrid
Powerful virtual data grid smartsheet with advanced customization. Best features from excel plus incredible performance πŸ”‹
Stars: ✭ 1,870 (+7380%)
Mutual labels:  grid, filter, datagrid
Functional Data Grid
Data grids in functional style with ReactJS
Stars: ✭ 125 (+400%)
Mutual labels:  grid, datagrid
Ka Table
Lightweight MIT React Table component for both TS and JS with Sorting, Filtering, Grouping, Virtualization, Editing and many more
Stars: ✭ 117 (+368%)
Mutual labels:  grid, datagrid
Muuri React
The layout engine for React
Stars: ✭ 163 (+552%)
Mutual labels:  grid, filter
Aurelia Slickgrid
Aurelia-Slickgrid a wrapper of the lightning fast & customizable SlickGrid datagrid with a few Styling Themes
Stars: ✭ 100 (+300%)
Mutual labels:  grid, datagrid
Smart Webcomponents
Web Components & Custom Elements for Professional Web Applications
Stars: ✭ 110 (+340%)
Mutual labels:  grid, datagrid
Grid
Declarative React Canvas Grid primitive for Data table, Pivot table, Excel Worksheets and more πŸ’₯
Stars: ✭ 573 (+2192%)
Mutual labels:  grid, datagrid
Sensei Grid
Simple and lightweight data grid in JS/HTML
Stars: ✭ 808 (+3132%)
Mutual labels:  grid, datagrid
Bs grid
Bootstrap Datagrid
Stars: ✭ 184 (+636%)
Mutual labels:  grid, datagrid
Tubular React
Material UI table with local or remote data-source. Featuring filtering, sorting, free-text search, export to CSV locally, and aggregations.
Stars: ✭ 202 (+708%)
Mutual labels:  grid, datagrid
React Table
βš›οΈ Hooks for building fast and extendable tables and datagrids for React
Stars: ✭ 15,739 (+62856%)
Mutual labels:  grid, datagrid
Muuri
Infinite responsive, sortable, filterable and draggable layouts
Stars: ✭ 9,797 (+39088%)
Mutual labels:  grid, filter
Easygrid
EasyGrid - VanillaJS Responsive Grid
Stars: ✭ 77 (+208%)
Mutual labels:  grid, filter
Awesome Grid
A curated list of grid(table) libraries and resources that developers may find useful.
Stars: ✭ 1,142 (+4468%)
Mutual labels:  grid, datagrid
Jqwidgets
Angular, Vue, React, Web Components, Blazor, Javascript, jQuery and ASP .NET Framework,
Stars: ✭ 227 (+808%)
Mutual labels:  grid, datagrid
Tui.grid
πŸžπŸ”‘ The Powerful Component to Display and Edit Data. Experience the Ultimate Data Transformer!
Stars: ✭ 1,859 (+7336%)
Mutual labels:  grid, datagrid
Ngx Datatable
✨ A feature-rich yet lightweight data-table crafted for Angular
Stars: ✭ 4,415 (+17560%)
Mutual labels:  grid, datagrid
Datatable
A simple, modern and interactive datatable library for the web
Stars: ✭ 587 (+2248%)
Mutual labels:  grid, datagrid
Shuffle
Categorize, sort, and filter a responsive grid of items
Stars: ✭ 2,170 (+8580%)
Mutual labels:  grid, filter
Griddle
Simple Grid Component written in React
Stars: ✭ 2,494 (+9876%)
Mutual labels:  grid, datagrid

DatatableJS

Build status NuGet Codacy Badge Gitter

What is DatatableJS?

DatatableJS is a helper to create a grid with Jquery Datatable and provides an extension to retrive data generically from Entity Framework context. It possible to use many datatable.js features with Html helper. It gives serverside or client side options. There's more: Wiki Documentation

Ekran AlΔ±ntΔ±sΔ±

Where can I get it?

Install DatatableJS for .Net Core, .Net 5, .Net 6 and use tag helpers.

PM> Install-Package DatatableJS
@(Html.JS().Datatable<Person>()
        .Name("PersonGrid")
        .Columns(col =>
        {
            col.Field(a => a.Id).Visible(false);
            col.Field(a => a.Name).Title("First Name").Class("text-danger");
            col.Field(a => a.Age).Title("Age").Searchable(false);
            col.Field(a => a.BirthDate).Title("Birth Date").Format("DD-MMM-Y");
            col.Command(a => a.Id, "onClick", text: "Click").Title("");
        })
        .Filters(filter =>
        {
            filter.Add(a => a.Id).GreaterThanOrEqual(1);
        })
        .URL(Url.Action("GetDataResult"), "POST")
        .ServerSide(true)
        .Render()
)

Or, use tag helper:

<js-datatable name="PersonGrid">
    <columns>
        <column field="Id" visible="false" />
        <column field="Name" width="50" title="Full Name" />
        <column field="Age" />
        <command-item field="Id" on-click="onClick" btn-class="btn btn-info" text="Edit" icon-class="fa fa-edit"/>
        <commands field="Id" text="Actions" items='new [] { new Command("Update", "onClick"), new Command("Delete", "onClick") }'/>
    </columns>
    <data-source url="@Url.Action("GetDataResult")" method="POST" server-side="true" data="addParam"/>
    <language url="//cdn.datatables.net/plug-ins/1.10.22/i18n/Turkish.json"/>
    <filters>
        <add field="Id" value="1" operand="GreaterThanOrEqual"/>
    </filters>
    <captions top="top caption here" bottom="bottom caption here"/>
    <render />
</js-datatable>

To use on .Net Frameworks (4.5 ... 4.8) Install DatatableJS.Net from the package manager console:

PM> Install-Package DatatableJS.Net

Then add datatables.net Javascript and CSS files or links to your project.

<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.css">
<script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.js"></script>

URL

Set the URL to retrieve data from any action with GET or POST method:

.URL(Url.Action("GetAll", "Person"), "POST")

Use DataRequest object to bind parameters of request. With .ToDataResult(request); extension method, if there is entity framework, execute IQueryable list server side from context. Otherwise manipulate data manually and return DataResult<T> object including data.

Install DatatableJS.Data from the package manager console:

PM> Install-Package DatatableJS.Data
using DatatableJS.Data;

public JsonResult GetAll(DataRequest request)
{
     DataResult<Person> result = ctx.People.ToDataResult(request);
     return Json(result);
}

ServerSide

Enable server-side processing mode. By default DataTables operates in client-side processing mode. Reference:

.ServerSide(true)

Data

Pass additional parameters with .Data("addParam") method and add script function to view.

function addParam() {
   return { Param1: "test1", Param2: true, Param3: 5 };
}

Get additional parameters with names.

public JsonResult GetAll(DataRequest request, string Param1, bool Param2, int Param3)
{
     //
}

Or get parameters with object reference named "data".

public JsonResult GetAll(DataRequest request, AddData data)
{
     //
}

Filters

Add additional filters before render datatable object. These filters are included in .ToDataResult(request) method with request while server side executing.

.Filters(filter =>
{
    filter.Add(a => a.BirthDate).LessThanOrEqual(DateTime.Now);
    filter.Add(a => a.Age).NotEqual(25);
})

Orders

Using this method you can define which column(s) the order is performed upon, and the ordering direction. Reference

.Orders(order => {
    order.Add(p => p.Name, OrderBy.Descending);
    order.Add(p => p.Age, OrderBy.Ascending);
})

Length Menu

This method allows you to readily specify the entries in the length drop down select list that DataTables shows . Reference

.LengthMenu(new int[] {5,10,15})

Set hasAll paramter true to show All option in select.

.LengthMenu(new int[] {5,10,15}, true)

Set allText paramter to change name of option All.

.LengthMenu(new int[] {5,10,15}, true, "All Pages")

Page Length

Number of rows to display on a single page when using pagination. Reference

.PageLength(15)

Name

Calling datatable on client-side is possible with name:

.Name("GridName")

Default name is "DataGrid". If there are multiple grid in single page, different names should be given. Call grid if you need like this:

$(document).ready(function() {
      var table = $('#DataGrid').DataTable();
} );

Searching

This option allows the search abilities of DataTables to be enabled or disabled. Default is "true". Reference:

.Searching(false)

Ordering

Enable or disable ordering of columns - it is as simple as that! DataTables, by default, allows end users to click on the header cell for each column, ordering the table by the data in that column. Default is "true". Reference:

.Ordering(false)

Paging

DataTables can split the rows in tables into individual pages, which is an efficient method of showing a large number of records in a small space. The end user is provided with controls to request the display of different data as the navigate through the data. Default is "true". Reference:

.Paging(false)

Selecting

Select adds item selection capabilities to a DataTable. Items can be rows, columns or cells, which can be selected independently, or together. Reference:

.Selecting(true)
.Selecting(true, SelectItems.Checkbox)
.Selecting(true, SelectItems.Cell, SelectStyle.Single)

Processing

Enable or disable the display of a 'processing' indicator when the table is being processed. Default is true. Reference:

.Processing(false)

ScrollX

Enable horizontal scrolling. When a table is too wide to fit into a certain layout, or you have a large number of columns in the table, you can enable horizontal (x) scrolling to show the table in a viewport, which can be scrolled. Reference:

.ScrollX(true)

Class

Default table css class is "display nowrap dataTable dtr-inline collapsed". It can be replaced with other table class like bootstrap "table table-striped".

.Class("table table-striped")

Captions

Adding some text on table header or footer with Captions method that:

.Captions("Top caption text...", "Bottom caption text...")

Fixed Columns

FixedColumns provides the option to freeze one or more columns to the left or right of a horizontally scrolling DataTable. Reference:

.FixedColumns(leftColumns: 1, rightColumns: 3)

Individual Column Searching

With this feature, data is be searchable column by column if column searchable is not false.

.ColumnSearching(true)

To give class for these inputs:

.ColumnSearching(true, "form-control")

Title

Set column header. Default is property name.

.Title("Person Name");

Or use DisplayAttribute for properties.

[Display(Name = "Person Name")]
public string Name { get; set; }

Format

Customize datetime format with Moment.js expression.

.Format("DD-MMM-Y");

Or use DisplayFormatAttribute for properties.

[DisplayFormat(DataFormatString = "DD-MMM-Y")]
public DateTime? BirthDate { get; set; }

Template

Manipulate and change display of column according to data.

.Template("(data === true) ? '<span class=\"glyphicon glyphicon-ok\"></span>' : '<span class=\"glyphicon glyphicon-remove\"></span>'");

Visible

Set column visible or hidden, default is true.

Searchable

Set column searchable or not, default is true.

Orderable

Set column orderable or not, default is true.

Width

Set column width percentage.

Class

Set css class of column.

DefaultContent

Set default value for null data.

Command

Add column commands to table in a variety of ways.

cols.Command(a => a.Name, "onClick").Title("Link");
cols.Command(a => a.Name, "onClick", "Click").Title("Link");
cols.Command(a => a.Id, "onClick", "Click", "glyphicon glyphicon-edit").Title("Edit");
cols.Command(a => a.Id, "onClick", "Click", "glyphicon glyphicon-edit", "btn btn-danger btn-xs").Title("Edit");
function onClick(e) {
   alert(e);
}

Commands

Add button groups as a commands.

cols.Commands(a => a.Id, new[] { new Command("Update", "onUpdate"), new Command("Delete", "onDelete") }, "Reports").Title("Actions");
cols.Commands(a => a.Id, new[] { new Command("Excel", "onDelete"), new Command("Pdf", "onUpdate") }, "Reports", "", "", "glyphicon glyphicon-export").Title("Export");

Default language is English. You can change with other languages or custumize it. Set json url parameter to Language method for other languages from CDN.

.Language("https://cdn.datatables.net/plug-ins/1.10.20/i18n/Turkish.json")

Or add json file local and customize it.

.Language(Url.Content("/Scripts/Turkish.json"))

Json example is below:

{
    "sEmptyTable":     "No data available in table",
    "sInfo":           "Showing _START_ to _END_ of _TOTAL_ entries",
    "sInfoEmpty":      "Showing 0 to 0 of 0 entries",
    "sInfoFiltered":   "(filtered from _MAX_ total entries)",
    "sInfoPostFix":    "",
    "sInfoThousands":  ",",
    "sLengthMenu":     "Show _MENU_ entries",
    "sLoadingRecords": "Loading...",
    "sProcessing":     "Processing...",
    "sSearch":         "Search:",
    "sZeroRecords":    "No matching records found",
    "oPaginate": {
        "sFirst":    "First",
        "sLast":     "Last",
        "sNext":     "Next",
        "sPrevious": "Previous"
    },
    "oAria": {
        "sSortAscending":  ": activate to sort column ascending",
        "sSortDescending": ": activate to sort column descending"
    }
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].