Как передать значение из элемента управления для просмотра Json

#asp.net-mvc #asp.net-mvc-4 #datatable #asp.net-mvc-5 #jquery-datatables

#asp.net-mvc #asp.net-mvc-4 #datatable #asp.net-mvc-5 #jquery-таблицы данных

Вопрос:

Я новичок в ASP.NET MVC. Вот мой код, я ищу экспертную помощь.

В этом коде я вычисляю SaleTotal

 [HttpPost]
public double SaleTotal(DateTime? FromDate, DateTime? ToDate)
{
    var Sales = from s in db.SalesMasters
                where (s.BillDate >= FromDate amp;amp; s.BillDate <= ToDate)
                select s.STotal;

    var SalesReturn = from s in db.SReturnMasters
                      where s.ReturnDate >= FromDate amp;amp; 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 amp;amp; S.BillDate <= ToDate )
                          select S).ToList();

       var filteredSales=(from S in db.SalesMasters
                 where (S.BillDate >= FromDate amp;amp; S.BillDate <= ToDate amp;amp;       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(
                '

Я хочу передать SaleTotal в DataTable или my View

Как я могу передать SaleTotal из контроллера в представление. Я перепробовал много способов, но моя проблема все еще не решена.


Комментарии:

1. Не могли бы вы описать, какие ошибки вы получаете?

2. И как выглядит json при вызове /Report/AllSaleReport ?

3. необходимо добавить saleTotal в нижний колонтитул DataTable..

4. Отчет о продажах работает нормально .. но я не могу передать итоговый результат продаж из элемента управления в представление

5. Но у вас есть эти данные в вашем результате json при вызове /Report/AllSaleReport . Верно? Вот почему я спросил, как выглядит json. Затем вы можете захватить эти данные и вставить их туда, куда хотите.

Ответ №1:

Если я правильно понимаю, данные, которые вам нужны, - это данные из метода SaleTotal.

Эти данные находятся в формате json, возвращаемом методом AllSaleReport:

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

Поэтому, когда вы вызываете AllSaleReport из DataTable, используйте fnServerData, чтобы переопределить функцию, которая получает эти данные, и вставить их туда, куда вы хотите. Что - то вроде:

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

                // Insert saleTotal in footer

                fnCallback(result);

        });
    },
 

pageTotal ' (Я хочу передать SaleTotal в DataTable или my View

Как я могу передать SaleTotal из контроллера в представление. Я перепробовал много способов, но моя проблема все еще не решена.

Комментарии:

1. Не могли бы вы описать, какие ошибки вы получаете?

2. И как выглядит json при вызове /Report/AllSaleReport ?

3. необходимо добавить saleTotal в нижний колонтитул DataTable..

4. Отчет о продажах работает нормально .. но я не могу передать итоговый результат продаж из элемента управления в представление

5. Но у вас есть эти данные в вашем результате json при вызове /Report/AllSaleReport . Верно? Вот почему я спросил, как выглядит json. Затем вы можете захватить эти данные и вставить их туда, куда хотите.

Ответ №1:

Если я правильно понимаю, данные, которые вам нужны, - это данные из метода SaleTotal.

Эти данные находятся в формате json, возвращаемом методом AllSaleReport:


Поэтому, когда вы вызываете AllSaleReport из DataTable, используйте fnServerData, чтобы переопределить функцию, которая получает эти данные, и вставить их туда, куда вы хотите. Что - то вроде:


total ' total)'
);
}
});
};
Я хочу передать SaleTotal в DataTable или my View

Как я могу передать SaleTotal из контроллера в представление. Я перепробовал много способов, но моя проблема все еще не решена.

Комментарии:

1. Не могли бы вы описать, какие ошибки вы получаете?

2. И как выглядит json при вызове /Report/AllSaleReport ?

3. необходимо добавить saleTotal в нижний колонтитул DataTable..

4. Отчет о продажах работает нормально .. но я не могу передать итоговый результат продаж из элемента управления в представление

5. Но у вас есть эти данные в вашем результате json при вызове /Report/AllSaleReport . Верно? Вот почему я спросил, как выглядит json. Затем вы можете захватить эти данные и вставить их туда, куда хотите.

Ответ №1:

Если я правильно понимаю, данные, которые вам нужны, — это данные из метода SaleTotal.

Эти данные находятся в формате json, возвращаемом методом AllSaleReport:


Поэтому, когда вы вызываете AllSaleReport из DataTable, используйте fnServerData, чтобы переопределить функцию, которая получает эти данные, и вставить их туда, куда вы хотите. Что — то вроде: