Skip to content

Commit c7d56ab

Browse files
madcoda9000ekondur
authored andcommitted
initComplete #91
Added the possibility to define a javascript function after Datatablejs is added to the Dom by adding the property FuntionAfterLoad Files modified: DatatableJs/JSHelper.cs DatatableJs/Builders/GridBuilder.cs DatatableJs/Helpers/GridHelper.cs DatatableJs/Helpers/RenderHelper.cs DatatableJs/Models/GridModel.cs DatatableJs,Net/JSHelper.cs DatatableJs.Net/Builders/GridBuilder.cs
1 parent 365163a commit c7d56ab

File tree

7 files changed

+115
-29
lines changed

7 files changed

+115
-29
lines changed

DatatableJS.Net/Builders/GridBuilder.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,23 @@ public class GridBuilder<T>
3737
internal SelectItems _selectItems { get; private set; }
3838
internal bool _selectInfo { get; private set; }
3939
internal bool _selectToggleable { get; private set; }
40+
internal string _FunctionAfterLoad { get; set; }
4041

4142
internal List<ColumnDefinition> _columns = new List<ColumnDefinition>();
4243
internal List<FilterDefinition> _filters = new List<FilterDefinition>();
4344
internal List<OrderDefinition> _orders = new List<OrderDefinition>();
4445

46+
/// <summary>
47+
/// Default name is "".
48+
/// </summary>
49+
/// <param name="functionAfterLoad"></param>
50+
/// <returns></returns>
51+
public GridBuilder<T> FunctionAfterLoad(string functionAfterLoad)
52+
{
53+
_FunctionAfterLoad = functionAfterLoad;
54+
return this;
55+
}
56+
4557
/// <summary>
4658
/// Default name is "DataGrid".
4759
/// </summary>

DatatableJS.Net/JSHelper.cs

Lines changed: 41 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -79,20 +79,47 @@ public static MvcHtmlString Render<T>(this GridBuilder<T> gridBuilder)
7979
</tfoot>"
8080
: string.Empty;
8181

82-
var tfootInit = gridBuilder._columnSearching ?
83-
$@"initComplete: function () {{
84-
this.api().columns().every(function() {{
85-
var that = this;
86-
$('input', this.footer()).on('keyup change clear', function () {{
87-
if (that.search() !== this.value) {{
88-
that
89-
.search(this.value)
90-
.draw();
91-
}}
92-
}});
93-
}});
94-
}},"
95-
: string.Empty;
82+
var tfootInit = string.Empty;
83+
84+
if(!String.IsNullOrEmpty(gridBuilder._FunctionAfterLoad) && gridBuilder._columnSearching==false)
85+
{
86+
tfootInit = "initComplete: function () {";
87+
tfootInit += gridBuilder._FunctionAfterLoad + "();";
88+
tfootInit += "},";
89+
} else if(!String.IsNullOrEmpty(gridBuilder._FunctionAfterLoad) && gridBuilder._columnSearching == true)
90+
{
91+
tfootInit = gridBuilder._columnSearching ?
92+
$@"initComplete: function () {{
93+
" + gridBuilder._FunctionAfterLoad + $@"
94+
this.api().columns().every(function() {{
95+
var that = this;
96+
$('input', this.footer()).on('keyup change clear', function () {{
97+
if (that.search() !== this.value) {{
98+
that
99+
.search(this.value)
100+
.draw();
101+
}}
102+
}});
103+
}});
104+
}},"
105+
: string.Empty;
106+
} else if(String.IsNullOrEmpty(gridBuilder._FunctionAfterLoad) && gridBuilder._columnSearching == true)
107+
{
108+
tfootInit = gridBuilder._columnSearching ?
109+
$@"initComplete: function () {{
110+
this.api().columns().every(function() {{
111+
var that = this;
112+
$('input', this.footer()).on('keyup change clear', function () {{
113+
if (that.search() !== this.value) {{
114+
that
115+
.search(this.value)
116+
.draw();
117+
}}
118+
}});
119+
}});
120+
}},"
121+
: string.Empty;
122+
}
96123

97124
var selectInit = gridBuilder._selectEnable ?
98125
$@"select: {{

DatatableJS/Builders/GridBuilder.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,23 @@ public class GridBuilder<T>
3737
internal SelectItems _selectItems { get; private set; }
3838
internal bool _selectInfo { get; private set; }
3939
internal bool _selectToggleable { get; private set; }
40+
internal string _FunctionAfterLoad { get; set; }
4041

4142
internal List<ColumnDefinition> _columns = new List<ColumnDefinition>();
4243
internal List<FilterModel> _filters = new List<FilterModel>();
4344
internal List<OrderModel> _orders = new List<OrderModel>();
4445

46+
/// <summary>
47+
/// Default name is "".
48+
/// </summary>
49+
/// <param name="functionAfterLoad"></param>
50+
/// <returns></returns>
51+
public GridBuilder<T> FunctionAfterLoad(string functionAfterLoad)
52+
{
53+
_FunctionAfterLoad = functionAfterLoad;
54+
return this;
55+
}
56+
4557
/// <summary>
4658
/// Default name is "DataGrid".
4759
/// </summary>

DatatableJS/Helpers/GridHelper.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@ namespace DatatableJS
88
[HtmlTargetElement("js-datatable")]
99
public class GridHelper : TagHelper
1010
{
11+
/// <summary>
12+
/// default is string.emtpy
13+
/// </summary>
14+
/// <value></value>
15+
public string FunctionAfterLoad { get; set; } = string.Empty;
1116
/// <summary>
1217
/// Default name is "DataGrid".
1318
/// </summary>
@@ -52,7 +57,8 @@ public override void Process(TagHelperContext context, TagHelperOutput output)
5257
Ordering = Ordering,
5358
Searching = Searching,
5459
Processing = Processing,
55-
ScrollX = ScrollX
60+
ScrollX = ScrollX,
61+
FunctionAfterLoad = FunctionAfterLoad
5662
};
5763

5864
context.Items.Add("DataGrid", grid);

DatatableJS/Helpers/RenderHelper.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public override void Process(TagHelperContext context, TagHelperOutput output)
2929
var script = $@"
3030
$(document).ready(function () {{
3131
$('#{grid.Name}').DataTable( {{
32+
initComplete: function () {grid.FunctionAfterLoad + "();"}
3233
processing:{grid.Processing.ToLowString()},
3334
scrollX:{grid.ScrollX.ToLowString()},
3435
serverSide:{grid.DataSource.ServerSide.ToLowString()},

DatatableJS/JSHelper.cs

Lines changed: 41 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -64,20 +64,47 @@ public static IHtmlContent Render<T>(this GridBuilder<T> gridBuilder)
6464
</tfoot>"
6565
: string.Empty;
6666

67-
var tfootInit = gridBuilder._columnSearching ?
68-
$@"initComplete: function () {{
69-
this.api().columns().every(function() {{
70-
var that = this;
71-
$('input', this.footer()).on('keyup change clear', function () {{
72-
if (that.search() !== this.value) {{
73-
that
74-
.search(this.value)
75-
.draw();
76-
}}
77-
}});
78-
}});
79-
}},"
80-
: string.Empty;
67+
var tfootInit = string.Empty;
68+
69+
if(!String.IsNullOrEmpty(gridBuilder._FunctionAfterLoad) && gridBuilder._columnSearching==false)
70+
{
71+
tfootInit = "initComplete: function () {";
72+
tfootInit += gridBuilder._FunctionAfterLoad + "();";
73+
tfootInit += "},";
74+
} else if(!String.IsNullOrEmpty(gridBuilder._FunctionAfterLoad) && gridBuilder._columnSearching == true)
75+
{
76+
tfootInit = gridBuilder._columnSearching ?
77+
$@"initComplete: function () {{
78+
" + gridBuilder._FunctionAfterLoad + $@"
79+
this.api().columns().every(function() {{
80+
var that = this;
81+
$('input', this.footer()).on('keyup change clear', function () {{
82+
if (that.search() !== this.value) {{
83+
that
84+
.search(this.value)
85+
.draw();
86+
}}
87+
}});
88+
}});
89+
}},"
90+
: string.Empty;
91+
} else if(String.IsNullOrEmpty(gridBuilder._FunctionAfterLoad) && gridBuilder._columnSearching == true)
92+
{
93+
tfootInit = gridBuilder._columnSearching ?
94+
$@"initComplete: function () {{
95+
this.api().columns().every(function() {{
96+
var that = this;
97+
$('input', this.footer()).on('keyup change clear', function () {{
98+
if (that.search() !== this.value) {{
99+
that
100+
.search(this.value)
101+
.draw();
102+
}}
103+
}});
104+
}});
105+
}},"
106+
: string.Empty;
107+
}
81108

82109
var selectInit = gridBuilder._selectEnable ?
83110
$@"select: {{

DatatableJS/Models/GridModel.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public class GridModel
2222
internal LanguageModel Language { get; set; }
2323
internal CaptionsModel Captions { get; set; }
2424
internal LengthMenuModel LengthMenu { get; set; }
25+
public string FunctionAfterLoad { get; set; }
2526

2627
/// <summary>
2728
/// GridModel()

0 commit comments

Comments
 (0)