如何将值从控件传递到视图Json



我是一个初学者。净MVC。这是我的代码,我正在寻找专家的帮助。

在这段代码中,我正在计算SaleTotal

[HttpPost]
public double SaleTotal(DateTime? FromDate, DateTime? ToDate)
{
    var Sales = from s in db.SalesMasters
                where (s.BillDate >= FromDate && s.BillDate <= ToDate)
                select s.STotal;
    var SalesReturn = from s in db.SReturnMasters
                      where s.ReturnDate >= FromDate && s.ReturnDate <= ToDate
                      select s.SRTotal;
    double  TotalSales = Sales.Sum().GetValueOrDefault();
    double TotalSalesReturn = SalesReturn.Sum().GetValueOrDefault();
    double Balance = TotalSales - TotalSalesReturn;
    return Balance;
}
public ActionResult AllSaleReport(JQueryDataTableParamModel param, int? BillNo , DateTime ? FromDate,DateTime? ToDate)
{
    double SalesTotal=SaleTotal(FromDate, ToDate);                              
    var Sales = (from S in db.SalesMasters
                 where (S.BillDate >= FromDate && S.BillDate <= ToDate )
                          select S).ToList();
       var filteredSales=(from S in db.SalesMasters
                 where (S.BillDate >= FromDate && S.BillDate <= ToDate &&       S.CancelFlag==false )
                          select S).ToList();
                 var result = from S in filteredSales.Skip(param.iDisplayStart).Take(param.iDisplayLength)
                 select new[] { S.BillDate.GetValueOrDefault().ToString("dd-MMM-yyyy"), Convert.ToString(S.BillNo), S.RefName, S.Paymode, Convert.ToString(S.NetAmt) };
    return Json(new
    {
        sEcho = param.sEcho,
        iTotalRecords = Sales.Count,
        iTotalDisplayRecords = filteredSales.Count,
        aaData = result,
        SalesReturn = SaleTotal(FromDate, ToDate)
    },
    JsonRequestBehavior.AllowGet);
}

我的JavaScript加载数据到DataTable

function LoadAllData() {
var reportTable = $('#AllSales').dataTable({
        "processing": true,
        //"bprocessing": true,
        "bJQueryUI": false,
       "bServerSide": true,
        "bFilter": false,
        //"bAutoWidth": true,
        "bDestroy": true,
        "iDisplayLength": 20,
        //"sProcessing": "<img src=~/Content/images/ajax-loader.gif />",
        "dom": 'T<"clear">lfrtip',
        "sSwfPath": "~/swf/copy_csv_xls_pdf.swf",
                "fnPreDrawCallback": function () {
            $("#AllSales").hide();
            $("#loading").show();
            // alert("Pre Draw");
        },
        "fnDrawCallback": function () {
            $("#AllSales").show();
            $("#loading").hide();
            // alert("Draw");
        },
        "fnInitComplete": function () {
        },
        "fnServerParams": function (aoData) {
            aoData.push({ "name": "FromDate", "value": $("#FromDate").val() })
            aoData.push({ "name": "ToDate", "value": $("#ToDate").val() })
        },
        "sAjaxSource": "/Report/AllSaleReport",
        "footerCallback": function (row, aoData, start, end, display) {
            var api = this.api(), aoData;
            // Remove the formatting to get integer data for summation
            var intVal = function (i) {
                return typeof i === 'string' ?
                    i.replace(/[$,]/g, '') * 1 :
                    typeof i === 'number' ?
                    i : 0;
            };
            // Total over all pages
            data = api.column(4).data();
            alert(data.length);
           // alert(SalesReturn);
            total = data.length ?
                data.reduce(function (a, b) {
                    return intVal(a) + intVal(b);                    
                }) :
                0;
            // Total over this page
            data = api.column(4, { page: 'current' }).data();
            pageTotal = data.length ?
                data.reduce(function (a, b) {
                    return intVal(a) + intVal(b);
                }) :
                0;
            // Update footer
            $(api.column(4).footer()).html(
                '$' + pageTotal + ' ( $' + total + ' total)'
            );
        }
    });
  };

我想把SaleTotal传递给DataTable或我的View

如何将SaleTotal从控制器传递到视图。我试了很多方法,但问题还是没有解决。

如果我理解正确的话,您想要的数据是来自SaleTotal方法的数据。

该数据在AllSaleReport方法返回的json中:

return Json(new
{
    ...
    SalesReturn = SaleTotal(FromDate, ToDate)
},

所以当你从DataTable调用AllSaleReport时,使用fnServerData来重写获取数据的函数,并将它插入到你想要的地方。比如:

        "fnServerData": function (sSource, aoData, fnCallback) {
            $.getJSON(sSource, aoData, function (result) {
                var saleTotal = result.SalesReturn;
                // Insert saleTotal in footer
                fnCallback(result);
        });
    },