Как вызвать хранимую процедуру при использовании таблиц данных jquery - PullRequest
0 голосов
/ 04 июня 2019

Я использую таблицы данных Jquery для своего проекта, и я работаю над Asp.Net MVC 5 и структурой сущностей 6. Что я действительно хочу сделать, так это просто вызвать мою хранимую процедуру, которая будет вызываться внутри моих таблиц данных jquery. Сейчас я вызываю таблицу из своей базы данных, и это вызов ajax для таблицы данных jquery.

Вот пример моего вызова ajax для таблицы данных.

$('#studentTable').DataTable({
    "ajax": {
        "url": "/StructuredImportTgts/GetData",
        "type": "GET",
        "datatype": "json"
    },
    responsive: 'true',
    dom: 'Bfrtip',
    buttons: [
        'copy', 'excel', 'pdf'
    ],
    "columns": [
        { "data": "PART_NO" },
        { "data": "LEVEL" },
        { "data": "PART_NO" },
        { "data": "PART_NAME" },
        { "data": "L1QTY" },
        { "data": "PL1" },
        { "data": "PL2" },
        { "data": "PL3" },
        { "data": "SupplierLocID" },
        { "data": "SupplierLocID" },
        { "data": "Discrepancies" },
        { "data": "Comments" }
    ]

Код для GETDATA () находится в моем контроллере, который выглядит следующим образом, он вызывает таблицу из базы данных, и именно здесь мне нужно вызвать мою хранимую процедуру.

public ActionResult GetData()
{
    using (Dev_Purchasing_New_ModelEntities db = new Dev_Purchasing_New_ModelEntities())
    {
        db.Configuration.LazyLoadingEnabled = false;
        List<bomStructuredImportTgt> bomStructuredImportTgtList = db.bomStructuredImportTgts.ToList<bomStructuredImportTgt>();
        return Json(new { data = bomStructuredImportTgtList }, JsonRequestBehavior.AllowGet);
    }
}

Ответы [ 2 ]

0 голосов
/ 09 июля 2019

Я получаю это с помощью этого подхода. Я надеюсь, что это может кому-то помочь.

  public ActionResult GetData1()
    {
        using (Dev_Purchasing_New_ModelEntities db = new Dev_Purchasing_New_ModelEntities())
        {
            db.Configuration.LazyLoadingEnabled = false;
            var bomStructuredImportTgtList = db.usp_GetStructureTGT();
            return Json(new { data = bomStructuredImportTgtList }, JsonRequestBehavior.AllowGet);
        }
    }
0 голосов
/ 23 июня 2019

Создание вспомогательного класса для данных

namespace DataTableHelper
{
    public class DataTableModel
    {
        public int Draw { get; set; }
        public int Start { get; set; }
        public int Length { get; set; }
        public IEnumerable<Column> Columns { get; set; }
        public IEnumerable<Order> Order { get; set; }
        public Search Search { get; set; }
    }
    public class Column
    {
        public string Data { get; set; }
        public string Name { get; set; }
        public bool Searchable { get; set; }
        public bool Orderable { get; set; }
        public Search Search { get; set; }
    }

    public class Search
    {
        public string Value { get; set; }
        public string Regex { get; set; }
    }

    public class Order
    {
        public int Column { get; set; }
        public string Dir { get; set; }
    }
}

Установить этот класс в качестве параметра в действии контроллера

[HttpPost]
public JsonResult GetData(DataTableModel model)
{
    list can be anything
    var list = new List(); // list of records to be displayed in datatable
    return Json(new
            {
                draw = model.Draw,
                data = list,
                recordsTotal = list .Count,
                recordsFiltered = 0
            }, JsonRequestBehavior.AllowGet);

}

настройки данных

$('#datatable').DataTable({
    ajax: {
      url: '/MyController/GetData',
      type: "POST" // ajax type must be match to controllers action type
    },
    serverSide: false,
    processing: true,
    columns: [
    ...
    ]
});
...