Skip to content

Commit 5dd8bef

Browse files
committed
Added raw jsoptions
1 parent 2fd5a7e commit 5dd8bef

File tree

8 files changed

+65
-1
lines changed

8 files changed

+65
-1
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,4 @@ LPRun.5.1.ReSharper.user
1818
LPRun.suo
1919
LPRun.5.1.ReSharper.user
2020
packages/*
21+
/packages

Mvc.JQuery.Datatables.Example/Views/Home/Index.cshtml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,16 @@ public class SomeController : Controller
5151
@using Mvc.JQuery.Datatables
5252
@using Mvc.JQuery.Datatables.Example.Controllers
5353
@using Mvc.JQuery.Datatables.Models
54+
@using Mvc.JQuery.Datatables.Serialization
5455
@{
5556
var vm = Html.DataTableVm("table-id", (HomeController h) => h.GetUsers(null));
5657
//vm.JsOptions.Add("iDisplayLength", 25);
5758
//vm.JsOptions.Add("aLengthMenu", new object[] { new[] {5, 10, 25, 250, -1} , new object[] { 5, 10, 25, 250, "All"} });
59+
60+
vm.JsOptions.Add("fnCreatedRow", new Raw(@"function( nRow, aData, iDataIndex ) {
61+
$(nRow).attr('data-id', aData[0]);
62+
}
63+
}"));
5864
vm.ColumnFilter = true;
5965
vm.FilterOn("Position", new { sSelector = "#custom-filter-placeholder-position" }).Select("Engineer", "Tester", "Manager")
6066
.FilterOn("Id").NumberRange();

Mvc.JQuery.Datatables/DataTableConfigVm.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
using System.Web.Routing;
55
using System.Web.Script.Serialization;
66
using Mvc.JQuery.Datatables.Models;
7+
using Mvc.JQuery.Datatables.Serialization;
8+
using Newtonsoft.Json;
79

810
namespace Mvc.JQuery.Datatables
911
{
@@ -236,7 +238,7 @@ private static string convertDictionaryToJsonBody(IDictionary<string, object> di
236238
{
237239
// Converting to System.Collections.Generic.Dictionary<> to ensure Dictionary will be converted to Json in correct format
238240
var dictSystem = new Dictionary<string, object>(dict);
239-
return (new JavaScriptSerializer()).Serialize((object)dictSystem).TrimStart('{').TrimEnd('}');
241+
return JsonConvert.SerializeObject((object)dictSystem, Formatting.None, new RawConverter()).TrimStart('{').TrimEnd('}');
240242
}
241243

242244
private static string convertColumnDefsToJson(IEnumerable<ColDef> columns)

Mvc.JQuery.Datatables/Mvc.JQuery.Datatables.csproj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@
3434
</PropertyGroup>
3535
<ItemGroup>
3636
<Reference Include="Microsoft.CSharp" />
37+
<Reference Include="Newtonsoft.Json">
38+
<HintPath>..\packages\Newtonsoft.Json.5.0.8\lib\net40\Newtonsoft.Json.dll</HintPath>
39+
</Reference>
3740
<Reference Include="System" />
3841
<Reference Include="System.ComponentModel.DataAnnotations" />
3942
<Reference Include="System.Core" />
@@ -56,6 +59,8 @@
5659
<Compile Include="DynamicLinq\DynamicLinq.cs" />
5760
<Compile Include="Models\oLanguage.cs" />
5861
<Compile Include="Properties\AssemblyInfo.cs" />
62+
<Compile Include="Serialization\Raw.cs" />
63+
<Compile Include="Serialization\RawConverter.cs" />
5964
<Compile Include="StaticReflectionHelper.cs" />
6065
<Compile Include="StringTransformers.cs" />
6166
<Compile Include="DataTablesTypeInfo.cs" />
@@ -66,6 +71,7 @@
6671
<Link>Views\Shared\DataTable.cshtml</Link>
6772
</EmbeddedResource>
6873
<Compile Include="RegisterDatatablesModelBinder.cs" />
74+
<None Include="packages.config" />
6975
<None Include="Views\Web.config" />
7076
</ItemGroup>
7177
<ItemGroup>
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
namespace Mvc.JQuery.Datatables.Serialization
2+
{
3+
public class Raw
4+
{
5+
string _value;
6+
public Raw(string value)
7+
{
8+
_value = value;
9+
}
10+
public override string ToString()
11+
{
12+
return _value;
13+
}
14+
}
15+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
using System;
2+
using Newtonsoft.Json;
3+
4+
namespace Mvc.JQuery.Datatables.Serialization
5+
{
6+
public class RawConverter : Newtonsoft.Json.JsonConverter
7+
{
8+
public override bool CanConvert(Type objectType)
9+
{
10+
return objectType == typeof(Raw);
11+
}
12+
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
13+
{
14+
throw new NotImplementedException();
15+
}
16+
17+
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
18+
{
19+
if (value != null && value.GetType() == typeof(Raw))
20+
{
21+
writer.WriteRawValue(value.ToString());
22+
}
23+
else
24+
{
25+
writer.WriteValue(value);
26+
}
27+
}
28+
}
29+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<packages>
3+
<package id="Newtonsoft.Json" version="5.0.8" targetFramework="net40" />
4+
</packages>

packages/repositories.config

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@
22
<repositories>
33
<repository path="..\Mvc.JQuery.Datatables.Example\packages.config" />
44
<repository path="..\Mvc.Jquery.DataTables.Tests\packages.config" />
5+
<repository path="..\Mvc.JQuery.Datatables\packages.config" />
56
</repositories>

0 commit comments

Comments
 (0)