@@ -55,6 +47,7 @@ can also use
@using Mvc.JQuery.Datatables
@using Mvc.JQuery.Datatables.Example.Controllers
+@using Mvc.JQuery.Datatables.Models
@{
var vm = Html.DataTableVm("table-id", (HomeController h) => h.GetUsers(null));
//vm.JsOptions.Add("iDisplayLength", 25);
@@ -62,37 +55,51 @@ can also use
vm.ColumnFilter = true;
vm.FilterOn("Position", new { sSelector = "#custom-filter-placeholder-position" }).Select("Engineer", "Tester", "Manager")
.FilterOn("Id").NumberRange();
- //.FilterOn("Number").CheckBoxes(Enum.GetNames(typeof(Numbers)));
+ //.FilterOn("Number").CheckBoxes(Enum.GetNames(typeof(Numbers)));
vm.StateSave = true;
- //vm.Language = "{ 'sUrl': '" + Url.Content("~/Content/jquery.dataTables.lang.de-DE.txt") + "' }";
-
- vm.Language = "{" +
- " 'sProcessing': 'Bitte warten...'," +
- " 'sLengthMenu': '_MENU_ Einträge anzeigen'," +
- " 'sZeroRecords': 'Keine Einträge vorhanden.'," +
- " 'sInfo': '_START_ bis _END_ von _TOTAL_ Einträgen'," +
- " 'sInfoEmpty': '0 bis 0 von 0 Einträgen'," +
- " 'sInfoFiltered': '(gefiltert von _MAX_ Einträgen)'," +
- " 'sInfoPostFix': ''," +
- " 'sSearch': 'Suchen'," +
- " 'sUrl': ''," +
- " 'oPaginate': {" +
- " 'sFirst': 'Erster'," +
- " 'sPrevious': 'Zurück'," +
- " 'sNext': 'Weiter'," +
- " 'sLast': 'Letzter'" +
- " }" +
- "}";
+
+ if (Request.QueryString["lang"] == "de")
+ {
+ //vm.Language = "{ 'sUrl': '" + Url.Content("~/Content/jquery.dataTables.lang.de-DE.txt") + "' }";
+ vm.Language = new Language
+ {
+ sProcessing = "Bitte warten...",
+ sLengthMenu = "_MENU_ Einträge anzeigen",
+ sZeroRecords = "Keine Einträge vorhanden.",
+ sInfo = "_START_ bis _END_ von _TOTAL_ Einträgen",
+ sInfoEmpty = "0 bis 0 von 0 Einträgen",
+ sInfoFiltered = "(gefiltert von _MAX_ Einträgen)",
+ sInfoPostFix = "",
+ sSearch = "Suchen",
+ sUrl = "",
+ oPaginate = new Paginate()
+ {
+ sFirst = "Erster",
+ sPrevious = "Zurück",
+ sNext = "Weiter",
+ sLast = "Letzter"
+ }
+ }.ToJsonString();
+ }
}
@Html.Partial("DataTable", vm)
+
diff --git a/Mvc.JQuery.Datatables.Example/Views/Shared/_Layout.cshtml b/Mvc.JQuery.Datatables.Example/Views/Shared/_Layout.cshtml
index 7d96acb..f7f49ba 100644
--- a/Mvc.JQuery.Datatables.Example/Views/Shared/_Layout.cshtml
+++ b/Mvc.JQuery.Datatables.Example/Views/Shared/_Layout.cshtml
@@ -54,17 +54,7 @@
-
diff --git a/Mvc.JQuery.Datatables/DataTableConfigVm.cs b/Mvc.JQuery.Datatables/DataTableConfigVm.cs
index f118533..afec191 100644
--- a/Mvc.JQuery.Datatables/DataTableConfigVm.cs
+++ b/Mvc.JQuery.Datatables/DataTableConfigVm.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Web.Routing;
using System.Web.Script.Serialization;
+using Mvc.JQuery.Datatables.Models;
namespace Mvc.JQuery.Datatables
{
diff --git a/Mvc.JQuery.Datatables/Models/oLanguage.cs b/Mvc.JQuery.Datatables/Models/oLanguage.cs
new file mode 100644
index 0000000..db58e6f
--- /dev/null
+++ b/Mvc.JQuery.Datatables/Models/oLanguage.cs
@@ -0,0 +1,31 @@
+using System.Web.Script.Serialization;
+
+namespace Mvc.JQuery.Datatables.Models
+{
+ public class Paginate
+ {
+ public string sFirst { get; set; }
+ public string sPrevious { get; set; }
+ public string sNext { get; set; }
+ public string sLast { get; set; }
+ }
+
+ public class Language
+ {
+ public string sProcessing { get; set; }
+ public string sLengthMenu { get; set; }
+ public string sZeroRecords { get; set; }
+ public string sInfo { get; set; }
+ public string sInfoEmpty { get; set; }
+ public string sInfoFiltered { get; set; }
+ public string sInfoPostFix { get; set; }
+ public string sSearch { get; set; }
+ public string sUrl { get; set; }
+ public Paginate oPaginate { get; set; }
+
+ public string ToJsonString()
+ {
+ return new JavaScriptSerializer().Serialize(this);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.csproj b/Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.csproj
index 9d78540..5f39ce1 100644
--- a/Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.csproj
+++ b/Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.csproj
@@ -61,6 +61,7 @@
From 87d63ed44192f648708fabdeb98975fa4392b140 Mon Sep 17 00:00:00 2001
From: Harry McIntyre
Date: Fri, 11 Oct 2013 09:48:58 +0100
Subject: [PATCH 3/9] Added VPP message back to docs
---
Mvc.JQuery.Datatables.Example/Views/Home/Index.cshtml | 3 +++
1 file changed, 3 insertions(+)
diff --git a/Mvc.JQuery.Datatables.Example/Views/Home/Index.cshtml b/Mvc.JQuery.Datatables.Example/Views/Home/Index.cshtml
index bac8122..264d0dc 100644
--- a/Mvc.JQuery.Datatables.Example/Views/Home/Index.cshtml
+++ b/Mvc.JQuery.Datatables.Example/Views/Home/Index.cshtml
@@ -9,6 +9,9 @@
Strongly typed datatable example
Nuget install-package Mvc.JQuery.Datatables
+
+Nuget install-package EmbeddedResourceVirtualPathProvider or Nuget install-package Mvc.JQuery.Datatables.Templates
+
Create a controller (see example)
From 902a7a5a6c4322ca692077a9235f03b429bd9494 Mon Sep 17 00:00:00 2001
From: Harry McIntyre
Date: Fri, 11 Oct 2013 14:30:21 +0100
Subject: [PATCH 4/9] Updated nuspec
---
.../Mvc.JQuery.Datatables.nuspec | 23 +++++++++++--------
1 file changed, 13 insertions(+), 10 deletions(-)
diff --git a/Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.nuspec b/Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.nuspec
index 931d93e..bd84a4a 100644
--- a/Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.nuspec
+++ b/Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.nuspec
@@ -1,16 +1,19 @@
- $id$
- $version$
- $title$
- $author$
- $author$
- https://github.com/mcintyre321/mvc.jquery.datatables
- false
- $description$
- Copyright 2011
- jquery datatables iqueryable razor
+ Mvc.JQuery.Datatables
+ 1.2.71
+ Mvc.JQuery.Datatables
+ Harry McIntyre
+ Harry McIntyre
+ https://github.com/mcintyre321/mvc.jquery.datatables
+ false
+ Strongly type html helpers for rendering jquery.datatables tables from IQueryables
+ Copyright 2011
+ jquery datatables iqueryable razor
+
+
+
From fccfee643516097ded1c221f6d844bba32699712 Mon Sep 17 00:00:00 2001
From: Harry McIntyre
Date: Fri, 11 Oct 2013 14:36:40 +0100
Subject: [PATCH 5/9] Update nuspec
---
.../Mvc.JQuery.Datatables.nuspec | 25 ++++++++-----------
1 file changed, 11 insertions(+), 14 deletions(-)
diff --git a/Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.nuspec b/Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.nuspec
index bd84a4a..a233720 100644
--- a/Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.nuspec
+++ b/Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.nuspec
@@ -1,21 +1,18 @@
- Mvc.JQuery.Datatables
- 1.2.71
- Mvc.JQuery.Datatables
- Harry McIntyre
- Harry McIntyre
- https://github.com/mcintyre321/mvc.jquery.datatables
- false
- Strongly type html helpers for rendering jquery.datatables tables from IQueryables
- Copyright 2011
- jquery datatables iqueryable razor
-
-
-
+ $id$
+ $version$
+ $title$
+ $author$
+ $author$
+ https://github.com/mcintyre321/mvc.jquery.datatables
+ false
+ $description$
+ Copyright 2011
+ jquery datatables iqueryable razor
-
+
\ No newline at end of file
From c950aba1a5b89c3d1b58c3d950bb8e673d943574 Mon Sep 17 00:00:00 2001
From: Harry McIntyre
Date: Fri, 11 Oct 2013 14:40:45 +0100
Subject: [PATCH 6/9] Trying to get the pp to work..
---
.../App_Start/RegisterDatatablesModelBinder.cs.pp | 0
Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.csproj | 2 +-
Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.nuspec | 6 +++---
3 files changed, 4 insertions(+), 4 deletions(-)
rename Mvc.JQuery.Datatables/{ => Content}/App_Start/RegisterDatatablesModelBinder.cs.pp (100%)
diff --git a/Mvc.JQuery.Datatables/App_Start/RegisterDatatablesModelBinder.cs.pp b/Mvc.JQuery.Datatables/Content/App_Start/RegisterDatatablesModelBinder.cs.pp
similarity index 100%
rename from Mvc.JQuery.Datatables/App_Start/RegisterDatatablesModelBinder.cs.pp
rename to Mvc.JQuery.Datatables/Content/App_Start/RegisterDatatablesModelBinder.cs.pp
diff --git a/Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.csproj b/Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.csproj
index 5f39ce1..5699c12 100644
--- a/Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.csproj
+++ b/Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.csproj
@@ -72,7 +72,7 @@
Views\Shared\DataTable.cshtml
-
+
Designer
diff --git a/Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.nuspec b/Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.nuspec
index a233720..cb3102e 100644
--- a/Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.nuspec
+++ b/Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.nuspec
@@ -12,7 +12,7 @@
Copyright 2011
jquery datatables iqueryable razor
-
-
-
+
+
+
\ No newline at end of file
From ec98e4bab6250a0ebccf7fb242a4fd83a496a369 Mon Sep 17 00:00:00 2001
From: Harry McIntyre
Date: Fri, 11 Oct 2013 14:48:21 +0100
Subject: [PATCH 7/9] Nuspec blah
---
Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.csproj | 4 ++--
Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.nuspec | 3 ---
Mvc.JQuery.Datatables/packages.config | 2 +-
3 files changed, 3 insertions(+), 6 deletions(-)
diff --git a/Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.csproj b/Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.csproj
index 5699c12..4ad4217 100644
--- a/Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.csproj
+++ b/Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.csproj
@@ -48,8 +48,8 @@
-
- ..\packages\WebActivator.1.5\lib\net40\WebActivator.dll
+
+ ..\packages\WebActivatorEx.2.0.3\lib\net40\WebActivatorEx.dll
diff --git a/Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.nuspec b/Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.nuspec
index cb3102e..62dfbe4 100644
--- a/Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.nuspec
+++ b/Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.nuspec
@@ -12,7 +12,4 @@
Copyright 2011
jquery datatables iqueryable razor
-
-
-
\ No newline at end of file
diff --git a/Mvc.JQuery.Datatables/packages.config b/Mvc.JQuery.Datatables/packages.config
index 6385f6b..26ea6bf 100644
--- a/Mvc.JQuery.Datatables/packages.config
+++ b/Mvc.JQuery.Datatables/packages.config
@@ -1,5 +1,5 @@
-
+
\ No newline at end of file
From 2fd5a7e3e4c7e0a681a15eaacc239504a527edb3 Mon Sep 17 00:00:00 2001
From: Harry McIntyre
Date: Fri, 11 Oct 2013 15:03:58 +0100
Subject: [PATCH 8/9] Moved modelbinder into project
---
.../App_Start/RegisterDatatablesModelBinder.cs | 13 -------------
.../Mvc.JQuery.Datatables.Example.csproj | 4 ----
Mvc.JQuery.Datatables.Example/packages.config | 1 -
.../RegisterDatatablesModelBinder.cs.pp | 14 --------------
.../Mvc.JQuery.Datatables.csproj | 12 +-----------
.../RegisterDatatablesModelBinder.cs | 15 +++++++++++++++
Mvc.JQuery.Datatables/packages.config | 5 -----
packages/WebActivator.1.5/WebActivator.1.5.nupkg | Bin 8190 -> 0 bytes
.../WebActivator.1.5/lib/net40/WebActivator.dll | Bin 9728 -> 0 bytes
packages/repositories.config | 1 -
10 files changed, 16 insertions(+), 49 deletions(-)
delete mode 100644 Mvc.JQuery.Datatables.Example/App_Start/RegisterDatatablesModelBinder.cs
delete mode 100644 Mvc.JQuery.Datatables/Content/App_Start/RegisterDatatablesModelBinder.cs.pp
create mode 100644 Mvc.JQuery.Datatables/RegisterDatatablesModelBinder.cs
delete mode 100644 Mvc.JQuery.Datatables/packages.config
delete mode 100644 packages/WebActivator.1.5/WebActivator.1.5.nupkg
delete mode 100644 packages/WebActivator.1.5/lib/net40/WebActivator.dll
diff --git a/Mvc.JQuery.Datatables.Example/App_Start/RegisterDatatablesModelBinder.cs b/Mvc.JQuery.Datatables.Example/App_Start/RegisterDatatablesModelBinder.cs
deleted file mode 100644
index ffb88f5..0000000
--- a/Mvc.JQuery.Datatables.Example/App_Start/RegisterDatatablesModelBinder.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-using System.Web;
-using System.Web.Mvc;
-using System.Web.WebPages;
-
-[assembly: PreApplicationStartMethod(typeof(Mvc.JQuery.Datatables.Example.App_Start.RegisterDatatablesModelBinder), "Start")]
-
-namespace Mvc.JQuery.Datatables.Example.App_Start {
- public static class RegisterDatatablesModelBinder {
- public static void Start() {
- ModelBinders.Binders.Add(typeof(DataTablesParam), new DataTablesModelBinder());
- }
- }
-}
diff --git a/Mvc.JQuery.Datatables.Example/Mvc.JQuery.Datatables.Example.csproj b/Mvc.JQuery.Datatables.Example/Mvc.JQuery.Datatables.Example.csproj
index f27766b..f4a762a 100644
--- a/Mvc.JQuery.Datatables.Example/Mvc.JQuery.Datatables.Example.csproj
+++ b/Mvc.JQuery.Datatables.Example/Mvc.JQuery.Datatables.Example.csproj
@@ -76,13 +76,9 @@
-
- ..\packages\WebActivator.1.5\lib\net40\WebActivator.dll
-
-
diff --git a/Mvc.JQuery.Datatables.Example/packages.config b/Mvc.JQuery.Datatables.Example/packages.config
index efe6314..0ec494d 100644
--- a/Mvc.JQuery.Datatables.Example/packages.config
+++ b/Mvc.JQuery.Datatables.Example/packages.config
@@ -17,5 +17,4 @@
-
\ No newline at end of file
diff --git a/Mvc.JQuery.Datatables/Content/App_Start/RegisterDatatablesModelBinder.cs.pp b/Mvc.JQuery.Datatables/Content/App_Start/RegisterDatatablesModelBinder.cs.pp
deleted file mode 100644
index 6568901..0000000
--- a/Mvc.JQuery.Datatables/Content/App_Start/RegisterDatatablesModelBinder.cs.pp
+++ /dev/null
@@ -1,14 +0,0 @@
-using System.Web.Mvc;
-using System.Web.WebPages;
-
-
-[assembly: WebActivator.PreApplicationStartMethod(typeof($rootnamespace$.App_Start.RegisterDatatablesModelBinder), "Start")]
-
-namespace $rootnamespace$.App_Start {
- public static class RegisterDatatablesModelBinder {
- public static void Start() {
- if (!ModelBinders.Binders.ContainsKey(typeof(Mvc.JQuery.Datatables.DataTablesParam)))
- ModelBinders.Binders.Add(typeof(Mvc.JQuery.Datatables.DataTablesParam), new Mvc.JQuery.Datatables.DataTablesModelBinder());
- }
- }
-}
diff --git a/Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.csproj b/Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.csproj
index 4ad4217..00020e4 100644
--- a/Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.csproj
+++ b/Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.csproj
@@ -34,10 +34,6 @@
-
- True
- ..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll
-
@@ -48,9 +44,6 @@
-
- ..\packages\WebActivatorEx.2.0.3\lib\net40\WebActivatorEx.dll
-
@@ -72,10 +65,7 @@
Views\Shared\DataTable.cshtml
-
-
- Designer
-
+
diff --git a/Mvc.JQuery.Datatables/RegisterDatatablesModelBinder.cs b/Mvc.JQuery.Datatables/RegisterDatatablesModelBinder.cs
new file mode 100644
index 0000000..4dc0b74
--- /dev/null
+++ b/Mvc.JQuery.Datatables/RegisterDatatablesModelBinder.cs
@@ -0,0 +1,15 @@
+using System.Web;
+using System.Web.Mvc;
+using System.Web.WebPages;
+using Mvc.JQuery.Datatables;
+
+[assembly: PreApplicationStartMethod(typeof(RegisterDatatablesModelBinder), "Start")]
+
+namespace Mvc.JQuery.Datatables {
+ public static class RegisterDatatablesModelBinder {
+ public static void Start() {
+ if (!ModelBinders.Binders.ContainsKey(typeof(DataTablesParam)))
+ ModelBinders.Binders.Add(typeof(DataTablesParam), new Mvc.JQuery.Datatables.DataTablesModelBinder());
+ }
+ }
+}
diff --git a/Mvc.JQuery.Datatables/packages.config b/Mvc.JQuery.Datatables/packages.config
deleted file mode 100644
index 26ea6bf..0000000
--- a/Mvc.JQuery.Datatables/packages.config
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/packages/WebActivator.1.5/WebActivator.1.5.nupkg b/packages/WebActivator.1.5/WebActivator.1.5.nupkg
deleted file mode 100644
index e31d7a7c361d0a0ebf54151cb2f9619108a959b4..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 8190
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
<&tN2Aab@WbK>fws-N$vc)Oar
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
-
\ No newline at end of file
From b88d8d6d703beca0a321617d60f7a7f6d777a7a1 Mon Sep 17 00:00:00 2001
From: jandic
Date: Mon, 14 Oct 2013 13:04:44 +0200
Subject: [PATCH 9/9] Extended to support specification of default column sort
order and mRender function specification. mRender function can be used for
manipulating cell content on client side (e.g. make it a hyperlink).
---
.../Controllers/HomeController.cs | 3 +-
.../Views/Home/Index.cshtml | 9 +++--
.../Views/Shared/DataTable.cshtml | 1 +
Mvc.JQuery.Datatables.sln.DotSettings.user | 2 +-
Mvc.JQuery.Datatables/DataTableConfigVm.cs | 34 ++++++++++++++++---
Mvc.JQuery.Datatables/DataTablesHelper.cs | 4 ++-
Mvc.JQuery.Datatables/DataTablesTypeInfo.cs | 9 +++++
7 files changed, 52 insertions(+), 10 deletions(-)
diff --git a/Mvc.JQuery.Datatables.Example/Controllers/HomeController.cs b/Mvc.JQuery.Datatables.Example/Controllers/HomeController.cs
index 77a75e1..545d1c5 100644
--- a/Mvc.JQuery.Datatables.Example/Controllers/HomeController.cs
+++ b/Mvc.JQuery.Datatables.Example/Controllers/HomeController.cs
@@ -51,9 +51,10 @@ public DataTablesResult GetUsers(DataTablesParam dataTableParam)
public class UserView
{
+ [DataTables(SortDirection = SortDirection.Ascending)]
public int Id { get; set; }
- [DataTables( DisplayName = "Full Name")]
+ [DataTables(DisplayName = "Full Name", MRenderFunction = "test")]
public string Name { get; set; }
diff --git a/Mvc.JQuery.Datatables.Example/Views/Home/Index.cshtml b/Mvc.JQuery.Datatables.Example/Views/Home/Index.cshtml
index 264d0dc..3a2b628 100644
--- a/Mvc.JQuery.Datatables.Example/Views/Home/Index.cshtml
+++ b/Mvc.JQuery.Datatables.Example/Views/Home/Index.cshtml
@@ -86,14 +86,17 @@ public class SomeController : Controller
}.ToJsonString();
}
}
+
+
@Html.Partial("DataTable", vm)
-
-
-
@if (Request.QueryString["lang"] != "de")
{
diff --git a/Mvc.JQuery.Datatables.Templates/Views/Shared/DataTable.cshtml b/Mvc.JQuery.Datatables.Templates/Views/Shared/DataTable.cshtml
index fd5cbd3..3f7ae90 100644
--- a/Mvc.JQuery.Datatables.Templates/Views/Shared/DataTable.cshtml
+++ b/Mvc.JQuery.Datatables.Templates/Views/Shared/DataTable.cshtml
@@ -35,6 +35,7 @@
}
var $table = $('#@Model.Id');
var dt = $table.dataTable({
+ "aaSorting": @Html.Raw(Model.ColumnSortingString),
"bProcessing": true,
"bStateSave": @Html.Raw(Model.StateSave ? "true" : "false"),
"bServerSide": true,
diff --git a/Mvc.JQuery.Datatables.sln.DotSettings.user b/Mvc.JQuery.Datatables.sln.DotSettings.user
index 7f927f9..410b7a4 100644
--- a/Mvc.JQuery.Datatables.sln.DotSettings.user
+++ b/Mvc.JQuery.Datatables.sln.DotSettings.user
@@ -5,4 +5,4 @@
True
True
ThingsAreCalledCorrectly
- <Session><Elements><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.EntityFramework" type="NUnitTestFixtureElement" Project="53671C41-666D-4269-A12A-BA6C2F209E7A" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.FilterTests" type="NUnitTestFixtureElement" Project="53671C41-666D-4269-A12A-BA6C2F209E7A" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.Linq" type="NUnitTestFixtureElement" Project="53671C41-666D-4269-A12A-BA6C2F209E7A" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.Linq.ExecuteParams" ParentId="Mvc.JQuery.DataTables.Tests.Linq" type="NUnitTestElement" TypeName="Mvc.JQuery.DataTables.Tests.Linq" MethodName="ExecuteParams" Project="53671C41-666D-4269-A12A-BA6C2F209E7A" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.EntityFramework.ExecuteParams" ParentId="Mvc.JQuery.DataTables.Tests.EntityFramework" type="NUnitTestElement" TypeName="Mvc.JQuery.DataTables.Tests.EntityFramework" MethodName="ExecuteParams" Project="53671C41-666D-4269-A12A-BA6C2F209E7A" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.Linq.ExecuteParamsAndTransform" ParentId="Mvc.JQuery.DataTables.Tests.Linq" type="NUnitTestElement" TypeName="Mvc.JQuery.DataTables.Tests.Linq" MethodName="ExecuteParamsAndTransform" Project="53671C41-666D-4269-A12A-BA6C2F209E7A" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.EntityFramework.ExecuteParamsAndTransform" ParentId="Mvc.JQuery.DataTables.Tests.EntityFramework" type="NUnitTestElement" TypeName="Mvc.JQuery.DataTables.Tests.Linq" MethodName="ExecuteParamsAndTransform" Project="53671C41-666D-4269-A12A-BA6C2F209E7A" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests" ParentId="Mvc.JQuery.DataTables.Tests.FilterTests" type="NUnitTestElement" TypeName="Mvc.JQuery.DataTables.Tests.FilterTests" MethodName="SearchQueryTests" Project="53671C41-666D-4269-A12A-BA6C2F209E7A" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests("^123$",System.Int32,True)" ParentId="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests" type="NUnitRowTestElement" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests("^456$",System.Int32,False)" ParentId="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests" type="NUnitRowTestElement" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests("^Ched",System.String,True)" ParentId="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests" type="NUnitRowTestElement" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests("^Cheddar",System.String,True)" ParentId="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests" type="NUnitRowTestElement" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests("^Cheddar$",System.String,True)" ParentId="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests" type="NUnitRowTestElement" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests("^False$",System.Boolean,False)" ParentId="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests" type="NUnitRowTestElement" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests("^True$",System.Boolean,True)" ParentId="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests" type="NUnitRowTestElement" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests("123",System.Int32,True)" ParentId="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests" type="NUnitRowTestElement" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests("456",System.Int32,False)" ParentId="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests" type="NUnitRowTestElement" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests("asdf",System.String,False)" ParentId="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests" type="NUnitRowTestElement" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests("Cheddar",System.String,True)" ParentId="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests" type="NUnitRowTestElement" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests("False",System.Boolean,False)" ParentId="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests" type="NUnitRowTestElement" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests("True",System.Boolean,True)" ParentId="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests" type="NUnitRowTestElement" /></Elements></Session>
\ No newline at end of file
+ <Session><Elements><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.EntityFramework" type="NUnitTestFixtureElement" Project="53671C41-666D-4269-A12A-BA6C2F209E7A" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.FilterTests" type="NUnitTestFixtureElement" Project="53671C41-666D-4269-A12A-BA6C2F209E7A" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.Linq" type="NUnitTestFixtureElement" Project="53671C41-666D-4269-A12A-BA6C2F209E7A" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.Linq.ExecuteParams" ParentId="Mvc.JQuery.DataTables.Tests.Linq" type="NUnitTestElement" TypeName="Mvc.JQuery.DataTables.Tests.Linq" MethodName="ExecuteParams" Project="53671C41-666D-4269-A12A-BA6C2F209E7A" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.EntityFramework.ExecuteParams" ParentId="Mvc.JQuery.DataTables.Tests.EntityFramework" type="NUnitTestElement" TypeName="Mvc.JQuery.DataTables.Tests.EntityFramework" MethodName="ExecuteParams" Project="53671C41-666D-4269-A12A-BA6C2F209E7A" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.Linq.ExecuteParamsAndTransform" ParentId="Mvc.JQuery.DataTables.Tests.Linq" type="NUnitTestElement" TypeName="Mvc.JQuery.DataTables.Tests.Linq" MethodName="ExecuteParamsAndTransform" Project="53671C41-666D-4269-A12A-BA6C2F209E7A" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.EntityFramework.ExecuteParamsAndTransform" ParentId="Mvc.JQuery.DataTables.Tests.EntityFramework" type="NUnitTestElement" TypeName="Mvc.JQuery.DataTables.Tests.Linq" MethodName="ExecuteParamsAndTransform" Project="53671C41-666D-4269-A12A-BA6C2F209E7A" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests" ParentId="Mvc.JQuery.DataTables.Tests.FilterTests" type="NUnitTestElement" TypeName="Mvc.JQuery.DataTables.Tests.FilterTests" MethodName="SearchQueryTests" Project="53671C41-666D-4269-A12A-BA6C2F209E7A" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests("^123$",System.Int32,True)" ParentId="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests" type="NUnitRowTestElement" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests("^456$",System.Int32,False)" ParentId="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests" type="NUnitRowTestElement" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests("^False$",System.Boolean,False)" ParentId="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests" type="NUnitRowTestElement" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests("^Ched",System.String,True)" ParentId="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests" type="NUnitRowTestElement" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests("^Cheddar",System.String,True)" ParentId="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests" type="NUnitRowTestElement" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests("^Cheddar$",System.String,True)" ParentId="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests" type="NUnitRowTestElement" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests("^True$",System.Boolean,True)" ParentId="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests" type="NUnitRowTestElement" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests("123",System.Int32,True)" ParentId="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests" type="NUnitRowTestElement" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests("456",System.Int32,False)" ParentId="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests" type="NUnitRowTestElement" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests("asdf",System.String,False)" ParentId="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests" type="NUnitRowTestElement" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests("False",System.Boolean,False)" ParentId="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests" type="NUnitRowTestElement" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests("Cheddar",System.String,True)" ParentId="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests" type="NUnitRowTestElement" /><UnitTestElement Provider="nUnit" Id="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests("True",System.Boolean,True)" ParentId="Mvc.JQuery.DataTables.Tests.FilterTests.SearchQueryTests" type="NUnitRowTestElement" /></Elements></Session>
\ No newline at end of file
diff --git a/Mvc.JQuery.Datatables/DataTableConfigVm.cs b/Mvc.JQuery.Datatables/DataTableConfigVm.cs
index afec191..19222bb 100644
--- a/Mvc.JQuery.Datatables/DataTableConfigVm.cs
+++ b/Mvc.JQuery.Datatables/DataTableConfigVm.cs
@@ -15,10 +15,12 @@ public class ColDef
public bool Sortable { get; set; }
public Type Type { get; set; }
public bool Searchable { get; set; }
+ public SortDirection SortDirection { get; set; }
+ public string MRenderFunction { get; set; }
- public static ColDef Create(string name, string p1, Type propertyType, bool visible = true, bool sortable = true)
+ public static ColDef Create(string name, string p1, Type propertyType, bool visible = true, bool sortable = true, SortDirection sortDirection = SortDirection.None, string mRenderFunction = null)
{
- return new ColDef() {Name = name, DisplayName = p1, Type = propertyType, Visible = visible, Sortable = sortable};
+ return new ColDef() {Name = name, DisplayName = p1, Type = propertyType, Visible = visible, Sortable = sortable, SortDirection = sortDirection, MRenderFunction = mRenderFunction };
}
}
public class DataTableConfigVm
@@ -107,6 +109,14 @@ public string Dom
}
}
+ public string ColumnSortingString
+ {
+ get
+ {
+ return convertColumnSortingToJson(Columns);
+ }
+ }
+
public bool ShowPageSizes { get; set; }
public bool StateSave { get; set; }
@@ -244,6 +254,7 @@ private static string convertColumnDefsToJson(IEnumerable columns)
var nonSortableColumns = columns.Select((x, idx) => x.Sortable ? -1 : idx).Where( x => x > -1).ToArray();
var nonVisibleColumns = columns.Select((x, idx) => x.Visible ? -1 : idx).Where(x => x > -1).ToArray();
var nonSearchableColumns = columns.Select((x, idx) => x.Searchable ? -1 : idx).Where(x => x > -1).ToArray();
+ var mRenderColumns = columns.Select((x, idx) => string.IsNullOrEmpty(x.MRenderFunction) ? new { x.MRenderFunction, Index = -1 } : new { x.MRenderFunction, Index = idx }).Where(x => x.Index > -1).ToArray();
var defs = new List();
@@ -253,9 +264,24 @@ private static string convertColumnDefsToJson(IEnumerable columns)
defs.Add(new { bVisible = false, aTargets = nonVisibleColumns });
if (nonSearchableColumns.Any())
defs.Add(new { bSearchable = false, aTargets = nonSearchableColumns });
+ if (mRenderColumns.Any())
+ foreach (var mRenderColumn in mRenderColumns)
+ {
+ defs.Add(new { mRender = "%" + mRenderColumn.MRenderFunction + "%", aTargets = new[] {mRenderColumn.Index} });
+ }
+
+ if (defs.Count > 0)
+ return new JavaScriptSerializer().Serialize(defs).Replace("\"%", "").Replace("%\"", "");
+
+ return "[]";
+ }
+
+ private static string convertColumnSortingToJson(IEnumerable columns)
+ {
+ var sortList = columns.Select((c, idx) => c.SortDirection == SortDirection.None ? new dynamic[] { -1, "" } : (c.SortDirection == SortDirection.Ascending ? new dynamic[] { idx, "asc" } : new dynamic[] { idx, "desc" })).Where(x => x[0] > -1).ToArray();
- if (defs.Count > 0)
- return new JavaScriptSerializer().Serialize(defs);
+ if (sortList.Length > 0)
+ return new JavaScriptSerializer().Serialize(sortList);
return "[]";
}
diff --git a/Mvc.JQuery.Datatables/DataTablesHelper.cs b/Mvc.JQuery.Datatables/DataTablesHelper.cs
index 029aabc..dd5d17a 100644
--- a/Mvc.JQuery.Datatables/DataTablesHelper.cs
+++ b/Mvc.JQuery.Datatables/DataTablesHelper.cs
@@ -47,7 +47,9 @@ public static DataTableConfigVm DataTableVm(this HtmlHelpe
Sortable = pi.Item2.Sortable,
Visible = pi.Item2.Visible,
Searchable = pi.Item2.Searchable,
- Type = pi.Item1.PropertyType
+ Type = pi.Item1.PropertyType,
+ SortDirection = pi.Item2.SortDirection,
+ MRenderFunction = pi.Item2.MRenderFunction
});
}
columns = columnList.ToArray();
diff --git a/Mvc.JQuery.Datatables/DataTablesTypeInfo.cs b/Mvc.JQuery.Datatables/DataTablesTypeInfo.cs
index 69c71cd..89add0f 100644
--- a/Mvc.JQuery.Datatables/DataTablesTypeInfo.cs
+++ b/Mvc.JQuery.Datatables/DataTablesTypeInfo.cs
@@ -56,7 +56,16 @@ public DataTablesAttribute()
public bool Sortable { get; set; }
public int? Order { get; set; }
public string DisplayName { get; set; }
+ public SortDirection SortDirection { get; set; }
+ public string MRenderFunction { get; set; }
public bool Visible { get; set; }
}
+
+ public enum SortDirection
+ {
+ None,
+ Ascending,
+ Descending
+ }
}
\ No newline at end of file