我如何将 datatable 参数传递给我的控制器,以便我的 crystal 报告使用 ASP.Net MVC 中的 table 参数保存文件名?
How can I pass the datatable parameter to my controller for my crystal report for saving file name with parameters of the table in ASP.Net MVC?
我想将我的 javascript 数据表数据传递到我的 crystal 报告控制器以保存我的文件名以及数据表中的员工姓名和日期。我怎样才能做到这一点?例如。我将使用名为
的文件名保存它
Payroll-08292020-Lastname
这是我的数据表脚本。
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"
}
});
这是我在数据表中触发打印预览的函数。
function printpreview(id)
{
window.location.href = "@Url.Action("export", "payroll")?id=" + id;
}
这是我的 crystal 报告控制器。
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");
}
试试这个:
在您看来:
<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
<div class="snippet-code">
<pre><code> <script>var url_reports = "@Url.Action("Export", "Payroll")"</script>
我想将我的 javascript 数据表数据传递到我的 crystal 报告控制器以保存我的文件名以及数据表中的员工姓名和日期。我怎样才能做到这一点?例如。我将使用名为
的文件名保存它Payroll-08292020-Lastname
这是我的数据表脚本。
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"
}
});
这是我在数据表中触发打印预览的函数。
function printpreview(id)
{
window.location.href = "@Url.Action("export", "payroll")?id=" + id;
}
这是我的 crystal 报告控制器。
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");
}
试试这个:
在您看来:
<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
<div class="snippet-code">
<pre><code> <script>var url_reports = "@Url.Action("Export", "Payroll")"</script>