Pass DataTable id to the controller
Pass DataTable id to the controller
shanii
Posts: 5Questions: 2Answers: 0
Hi Allan,
Can you please an help me on this Issue?It's a bug in production and I am in hot water because of that.
I have dataTables with dynamic IDs based on each group, how can I pass(retrieve) the table ID to controller to customize sql query in LINQ?(want to load the data for each user in its dataTable).
here are my codes:
<div class="accordion-group">
<div class="accordion-heading">
<div class="accordion-toggle" data-toggle="collapse" data-target="#@collapseId" id="User_@Html.DisplayFor(itemdata => userName)">
<strong>@Html.DisplayFor(itemdata => userName)</strong> (@countText)
</div>
</div> <!--/accordion heading-->
<div id="@collapseId" class="collapse">
<table class="table table-bordered table-striped table-condensed datatable-full-wrapper-manager-grouped" id="@Html.DisplayFor(itemdata => userName)">
<thead>
<tr style="font-weight:bold">
<td>Assigned User</td>
<td>Priority</td>
<td>Record ID</td>
<td>Patient</td>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div><!--/accordion group content-->
</div><!--/accordion group-->
}
</div>
Controller:
internal JsonResult RetrieveUserWorkAssignments(JQueryDataTableParamModel param)
{
#region variables
string search = !string.IsNullOrEmpty(param.sGroup) ? param.sSearch : "";
var start = param.iDisplayStart;
int length = param.iDisplayLength;
string sortColumn = string.Empty;
string sortColumnDir = string.Empty;
int recordsTotal = 0;
int filteredCount = 0;
JsonResult data;
List<AllWorkAssignments> workAssignments;
string[][] aaData;
#endregion
workAssignments = _workAssignmentServiceHelper.GetAllWorkForTeam(start, length, sortColumn, sortColumnDir, search);
if (workAssignments.Count > 0)
{
recordsTotal = workAssignments[0].TotalRecords;
filteredCount = workAssignments[0].RecordsFiltered;
}
aaData = workAssignments.Select(
d =>
new string[] { d.AssignedUser, d.Priority, d.RecordId, d.Patient })
.ToArray();
data = Json(
new
{
param.sEcho, // Passing the sEcho value back, avoiding redundancy in property name
iTotalDisplayRecords = filteredCount,
iTotalRecords = recordsTotal,
aaData // Passing the aaData value back, avoiding redundancy in property name
}, JsonRequestBehavior.AllowGet);
return data;
}
This discussion has been closed.
Answers
I don't see your DataTables' initialisation in the above, but you would use
ajax.data
if you are usingajax
to get the data via Ajax.ajax.data
lets you add information to send to the server, including the table id if you wanted to.Allan
Thanks Allan, here is the initialization in bootstrap :
$(document).ready(function () {
//Setup any datatables in the DOM after document load
setupDataTables();
});
and :
$(".datatable-full-wrapper-manager-grouped:not(.dataTable)").dataTable({
"sDom": "<'row-fluid'<'span12't>><'row-fluid'<'span12'p>><'row-fluid'<'span12 dataTables-info-right'i>>",
"bServerSide": true,
"sAjaxSource": "LoadAllTeamWorkData",
for sSearch how can I get the dataTable ID? Is it there when the setup is calling?
You are using the legacy options so you would use fnServerParams to add information to the Ajax request.
Allan
Right, the problem is retrieving dataTable ID, I am creating each table with an ID, which parameter or object has that ID in legacy options?
Use
table().node()
. e.g.:Allan
Thanks a lot!, I am able to get the TableID now.
How can I grab the DataTable object with its ID in $(".accordion-group").on('show.bs.collapse', function (e)
event?
I wanna reDraw it based on a new filter!
$('#myId').DataTable()
will give you the DataTable object. If you don't know the id, then you could try using a class selector based on whatever class your DataTable is using, or use$.fn.dataTable.tables()
.Allan