|
1 | 1 | @using System.Data.Odbc |
2 | 2 | @using System.Linq |
3 | 3 | @using Mvc.JQuery.Datatables |
| 4 | +@using Newtonsoft.Json |
| 5 | +@using Newtonsoft.Json.Linq |
4 | 6 | @model DataTableConfigVm |
5 | 7 | <table id="@Model.Id" class="display @(Model.TableClass ?? DataTableConfigVm.DefaultTableClass ?? "")" > |
6 | 8 | <thead> |
|
38 | 40 | return; |
39 | 41 | } |
40 | 42 | var $table = $('#@Model.Id'); |
41 | | - var dt = $table.dataTable({ |
42 | | - "aaSorting": @Html.Raw(Model.ColumnSortingString), |
43 | | - "bProcessing": true, |
44 | | - "bStateSave": @Html.Raw(Model.StateSave ? "true" : "false"), |
45 | | - "bServerSide": true, |
46 | | - "bFilter": @Model.ShowSearch.ToString().ToLower(), |
47 | | - "sDom": '@Html.Raw(Model.Dom)', |
48 | | - @if (Model.LengthMenu != null) { <text>"lengthMenu": @Html.Raw(Model.LengthMenu),</text> } |
49 | | - @if (Model.PageLength.HasValue) |
| 43 | +
|
| 44 | + @{ |
| 45 | + var options = new JObject(); |
| 46 | + options["aaSorting"] = new JRaw(Model.ColumnSortingString); |
| 47 | + options["bProcessing"] = true; |
| 48 | + options["bSaveState"] = Model.StateSave; |
| 49 | + options["bFilter"] = Model.ShowSearch; |
| 50 | + options["sDom"] = Model.Dom; |
| 51 | + |
| 52 | + if (Model.LengthMenu != null) |
50 | 53 | { |
51 | | - <text>"pageLength": @Html.Raw(Model.PageLength),</text> |
| 54 | + options["lengthMenu"] = new JRaw(Model.LengthMenu); |
52 | 55 | } |
53 | | - "bAutoWidth": @Model.AutoWidth.ToString().ToLowerInvariant(), |
54 | | - "sAjaxSource": "@Html.Raw(Model.AjaxUrl)", @Html.Raw(Model.TableTools ? "\"oTableTools\" : { \"sSwfPath\": \"//cdn.datatables.net/tabletools/2.2.1/swf/copy_csv_xls_pdf.swf\" }," : "") |
55 | | - "fnServerData": function(sSource, aoData, fnCallback) { |
56 | | - $.ajax({ |
57 | | - "dataType": 'json', |
58 | | - "type": "POST", |
59 | | - "url": sSource, |
60 | | - "data": aoData, |
61 | | - "success": fnCallback |
62 | | - }); |
63 | | - }, |
64 | | - "aoColumnDefs" : @Html.Raw(Model.ColumnDefsString), |
65 | | - "aoSearchCols": @Html.Raw(Model.ColumnInitialSearchString) |
66 | | - @Html.Raw(!string.IsNullOrWhiteSpace(Model.JsOptionsString) ? ", " + Model.JsOptionsString : "") |
67 | | - @if (!string.IsNullOrEmpty(Model.Language)) |
| 56 | + if (Model.PageLength.HasValue) |
68 | 57 | { |
69 | | - <text> |
70 | | - ,"oLanguage": @Html.Raw(@Model.Language) |
71 | | - </text> |
| 58 | + options["pageLength"] = Model.PageLength; |
72 | 59 | } |
73 | | - @if (!string.IsNullOrEmpty(Model.DrawCallback)) |
| 60 | + options["bAutoWidth"] = Model.AutoWidth; |
| 61 | + options["sAjaxSource"] = Model.AjaxUrl; |
| 62 | + if (Model.TableTools) |
74 | 63 | { |
75 | | - <text> |
76 | | - ,"fnDrawCallback": @Html.Raw(Model.DrawCallback) |
77 | | - </text> |
| 64 | + options["oTableTools"] = new JRaw("{ 'sSwfPath': '//cdn.datatables.net/tabletools/2.2.1/swf/copy_csv_xls_pdf.swf' }"); |
78 | 65 | } |
79 | | - }); |
80 | | - @if (Model.ColumnFilter) |
| 66 | + options["fnServerData"] = new JRaw(" function(sSource, aoData, fnCallback) { $.ajax({ 'dataType': 'json', 'type': 'POST', 'url': sSource, 'data': aoData, 'success': fnCallback })}"); |
| 67 | + options["aoColumnDefs"] = new JRaw(Model.ColumnDefsString); |
| 68 | + options["aoSearchCols"] = new JRaw(Model.ColumnInitialSearchString); |
| 69 | + if (Model.JsOptions.Any()) |
81 | 70 | { |
82 | | - <text> |
83 | | - dt.columnFilter(@Html.Raw(Model.ColumnFilterVm.ToString())); |
84 | | - </text> |
| 71 | + foreach (var jsOption in Model.JsOptions) |
| 72 | + { |
| 73 | + options[jsOption.Key] = new JRaw(jsOption.Value); |
| 74 | + } |
85 | 75 | } |
| 76 | + if (!string.IsNullOrWhiteSpace(Model.Language)) |
| 77 | + { |
| 78 | + options["oLanguage"] = new JRaw(Model.Language); |
| 79 | + } |
| 80 | + if (!string.IsNullOrWhiteSpace(Model.DrawCallback)) |
| 81 | + { |
| 82 | + options["fnDrawCallback"] = new JRaw(Model.DrawCallback); |
| 83 | + } |
| 84 | + |
| 85 | + } |
| 86 | +
|
| 87 | + var dt = $table.dataTable(@Html.Raw(options.ToString(Formatting.Indented))); |
| 88 | + @if (Model.ColumnFilter) |
| 89 | + { |
| 90 | + @Html.Raw("dt.columnFilter(" + Model.ColumnFilterVm + ");") |
| 91 | + } |
86 | 92 | })(); |
87 | 93 | </script> |
0 commit comments