简体   繁体   中英

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?

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>&nbsp;<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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM