I want to pass my javascript datatable data to my crystal report controller to save my filename with employeename and date from datatable. How can I do that? For example. I will save it with a filename named as
Payroll-08292020-Lastname
This is my datatable script.
var dataTable;
$(function () {
dataTable = $('#payrollTable').DataTable({
"ajax": "@Url.Action("getdata", "payroll")",
"scrollX": true,
"columns": [
{ "data": "EmployeeName" },
{ "data": "ShiftName" },
{
"data": "StartDate", "render": function (value) {
if (value === null) return "";
return moment(value).format('DD/MM/YYYY');
}
},
{
"data": "EndDate", "render": function (value) {
if (value === null) return "";
return moment(value).format('DD/MM/YYYY');
}
},
{
"data": "PayDate", "render": function (value) {
if (value === null) return "";
return moment(value).format('DD/MM/YYYY');
}
},
{ "data": "MonthlyRate" },
{ "data": "PerDay" },
{ "data": "Cola" },
{ "data": "RegularPayDaysWork" },
{ "data": "RegularPayTotal" },
{ "data": "RegHolidayDaysWork" },
{ "data": "RegHolidayPercent" },
{ "data": "RegHolidayTotal" },
{ "data": "SpecialNWHolidayDaysWork" },
{ "data": "SpecialNWHolidayPercent" },
{ "data": "SpecialNWHolidayTotal" },
{ "data": "DoubleHolidayDaysWork" },
{ "data": "DoubleHolidayPercent" },
{ "data": "DoubleHolidayTotal" },
{ "data": "RestdayDaysWork" },
{ "data": "RestdayPercent" },
{ "data": "RestdayTotal" },
{ "data": "RegOTDaysWork" },
{ "data": "RegOTTotal" },
{ "data": "RestdayOTDaysWork" },
{ "data": "RestdayOTTotal" },
{ "data": "SpecialHolidayOTDaysWork" },
{ "data": "SpecialHolidayOTTotal" },
{ "data": "SpecialWithRestdayOTDaysWork" },
{ "data": "SpecialWithRestdayOTTotal" },
{ "data": "RegularHolidayOTDaysWork" },
{ "data": "RegularHolidayOTTotal" },
{ "data": "RegularWithRestdayOTDaysWork" },
{ "data": "RegularWithRestdayOTTotal" },
{ "data": "DoubleHolidayOTDaysWork" },
{ "data": "DoubleHolidayOTTotal" },
{ "data": "DoubleWithRestdayOTDaysWork" },
{ "data": "DoubleWithRestdayOTTotal" },
{ "data": "AbsentDays" },
{ "data": "AbsentTotal" },
{ "data": "LateHrs" },
{ "data": "LateTotal" },
{ "data": "UndertimeHrs" },
{ "data": "UndertimeTotal" },
{ "data": "AllowanceTotal" },
{ "data": "WitholdingTaxTotal" },
{ "data": "PagibigContributionTotal" },
{ "data": "PhilhealthContributionTotal" },
{ "data": "SSSContributionTotal" },
{ "data": "HDMFLoanTotal" },
{ "data": "SSSLoan" },
{ "data": "CashLoanTotal" },
{ "data": "OtherDeductionsTotal" },
{ "data": "LeaveDays" },
{ "data": "LeaveTotal" },
{ "data": "GrossIncome" },
{ "data": "TotalDeductions" },
{ "data": "NetIncome" },
{
"data": "Id", "render": function (data) {
return "<a class='btn btn-default btn-sm' onclick=edit(" + data + ")><i class='fa fa-pencil'></i>Edit</a> <a class='btn btn-default btn-sm' onclick=printpreview(" + data + ")><i class='fa fa-print'></i>Print Payslip</a>"
},
"orderable": false,
"searchable": false,
"width": "170px"
}
],
"language": {
"emptyTable": "No data found"
}
});
and this is my function to trigger printpreview in datatable.
function printpreview(id)
{
window.location.href = "@Url.Action("export", "payroll")?id=" + id;
}
This is my controller for crystal report.
public ActionResult Export(int? id)
{
ReportDocument rd = new ReportDocument();
rd.Load(Path.Combine(Server.MapPath("~/Reports/CrystalReportPayroll.rpt")));
rd.SetDataSource(db.Payrolls
.Select(p => new
{
Id = p.Id,
EmployeeId = p.Employees.FirstName + " " + p.Employees.MiddleName + " " + p.Employees.LastName,
StartDate = DbFunctions.TruncateTime(p.StartDate).Value,
EndDate = DbFunctions.TruncateTime(p.EndDate).Value,
PayDate = DbFunctions.TruncateTime(p.PayDate).Value,
Cola = p.Cola.Value,
MonthlyRate = p.MonthlyRate,
PerDay = p.PerDay,
RegularPayDaysWork = p.RegularPayDaysWork,
RegularPayTotal = p.RegularPayTotal,
RegHolidayDaysWork = p.RegHolidayDaysWork,
RegHolidayTotal = p.RegHolidayTotal,
SpecialNWHolidayDaysWork = p.SpecialNWHolidayDaysWork,
SpecialNWHolidayTotal = p.SpecialNWHolidayTotal,
DoubleHolidayDaysWork = p.DoubleHolidayDaysWork,
DoubleHolidayTotal = p.DoubleHolidayTotal,
RestdayDaysWork = p.RestdayDaysWork,
RestdayTotal = p.RestdayTotal,
RegOTDaysWork = p.RegOTDaysWork == null ? 0 : p.RegOTDaysWork.Value,
RegOTTotal = p.RegOTTotal == null ? 0 : p.RegOTTotal.Value,
RestdayOTDaysWork = p.RestdayOTDaysWork == null ? 0 : p.RestdayOTDaysWork.Value,
RestdayOTTotal = p.RestdayOTTotal == null ? 0 : p.RestdayOTTotal.Value,
SpecialHolidayOTDaysWork = p.SpecialHolidayOTDaysWork == null ? 0 : p.SpecialHolidayOTDaysWork.Value,
SpecialHolidayOTTotal = p.SpecialHolidayOTTotal == null ? 0 : p.SpecialHolidayOTTotal.Value,
SpecialWithRestdayOTDaysWork = p.SpecialWithRestdayOTDaysWork == null ? 0 : p.SpecialWithRestdayOTDaysWork.Value,
SpecialWithRestdayOTTotal = p.SpecialWithRestdayOTTotal == null ? 0 : p.SpecialWithRestdayOTTotal.Value,
RegularHolidayOTDaysWork = p.RegularHolidayOTDaysWork == null ? 0 : p.RegularHolidayOTDaysWork.Value,
RegularHolidayOTTotal = p.RegularHolidayOTTotal == null ? 0 : p.RegularHolidayOTTotal.Value,
RegularWithRestdayOTDaysWork = p.RegularWithRestdayOTDaysWork == null ? 0 : p.RegularWithRestdayOTDaysWork.Value,
RegularWithRestdayOTTotal = p.RegularWithRestdayOTTotal == null ? 0 : p.RegularWithRestdayOTTotal.Value,
DoubleHolidayOTDaysWork = p.DoubleHolidayOTDaysWork == null ? 0 : p.DoubleHolidayOTDaysWork.Value,
DoubleHolidayOTTotal = p.DoubleHolidayOTTotal == null ? 0 : p.DoubleHolidayOTTotal.Value,
DoubleWithRestdayOTDaysWork = p.DoubleWithRestdayOTDaysWork == null ? 0 : p.DoubleWithRestdayOTDaysWork.Value,
DoubleWithRestdayOTTotal = p.DoubleWithRestdayOTTotal == null ? 0 : p.DoubleWithRestdayOTTotal.Value,
AbsentDays = p.AbsentDays == null ? 0 : p.AbsentDays.Value,
AbsentTotal = p.AbsentTotal == null ? 0 : p.AbsentTotal.Value,
LateHrs = p.LateHrs == null ? 0 : p.LateHrs.Value,
LateTotal = p.LateTotal == null ? 0 : p.LateTotal.Value,
UndertimeHrs = p.UndertimeHrs == null ? 0 : p.UndertimeHrs.Value,
UndertimeTotal = p.UndertimeTotal == null ? 0 : p.UndertimeTotal.Value,
AllowanceTotal = p.AllowanceTotal == null ? 0 : p.AllowanceTotal.Value,
WitholdingTaxTotal = p.WitholdingTaxTotal == null ? 0 : p.WitholdingTaxTotal.Value,
PagibigContributionTotal = p.PagibigContributionTotal == null ? 0 : p.PagibigContributionTotal.Value,
PhilhealthContributionTotal = p.PhilhealthContributionTotal == null ? 0 : p.PhilhealthContributionTotal.Value,
SSSContributionTotal = p.SSSContributionTotal == null ? 0 : p.SSSContributionTotal.Value,
HDMFLoanTotal = p.HDMFLoanTotal == null ? 0 : p.HDMFLoanTotal.Value,
SSSLoan = p.SSSLoan == null ? 0 : p.SSSLoan.Value,
CashLoanTotal = p.CashLoanTotal == null ? 0 : p.CashLoanTotal.Value,
OtherDeductionsTotal = p.OtherDeductionsTotal == null ? 0 : p.OtherDeductionsTotal.Value,
LeaveDays = p.LeaveDays == null ? 0 : p.LeaveDays.Value,
LeaveTotal = p.LeaveTotal == null ? 0 : p.LeaveTotal.Value,
GrossIncome = p.GrossIncome == null ? 0 : p.GrossIncome.Value,
TotalDeductions = p.TotalDeductions == null ? 0 : p.TotalDeductions.Value,
NetIncome = p.NetIncome == null ? 0 : p.NetIncome.Value,
})
.Where(p => id == p.Id).ToList());
Response.Buffer = false;
Response.ClearContent();
Response.ClearHeaders();
Stream stream = rd.ExportToStream
(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
stream.Seek(0, SeekOrigin.Begin);
return File(stream, "application/pdf", "Payroll.pdf");
}
Try this:
in your View:
<script>var url_reports = "@Url.Action("Export", "Payroll")"</script>
in your JS script:
function printpreview(id)
{
window.open(url_reports + "/" + id);
}
In your RouteConfig make sure that you have this:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Or create a custom route for you controller
routes.MapRoute(
"ExportPayroll",
"Payroll/Export/{id}",
new { controller = "Payroll", action = "Export", id = UrlParameter.Optional }
);
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.