Member 7678194 Ответов: 1

Не загружать записи в jquery datatable


Я загружаю несколько записей из таблицы базы данных в jquery datatable, и процесс нормально запускается, если мне не назначают метод обратного вызова ajax, т. е. success: function (data) {}.
Но когда меня назначат, не загружайте записи.
На самом деле я хочу, чтобы, если запись не найдена, то был открыт новый вид(т. е. имя вида: create view), иначе он загружает записи в представление списка(т. е. имя вида: showGrid view)

Почему это так???
Пожалуйста, помогите мне любое тело......

Что я уже пробовал:

Файл ShowGrid.cshtml:
$(document).ready(function () {
            $("#demoGrid").DataTable({
                processing: true, // for show progress bar
                serverSide: true, // for process server side
                filter: true, // this is for disable filter (search box)
                orderMulti: false, // for disable multiple column at once
                //pageLength: 5,
                paging: false,
                //searching: false,
                //ordering: false,
                scrollY: 200,
                keys: true,
                scroller: {
                    loadingIndicator: true
                },

                ajax: {
                    url: "/Demo/LoadData",
                    type: "POST",
                    datatype: "json",
                    success: function (data) {
                        if (data.recordsTotal == 0)
                            window.location.href = data.redirecturl; // your action should return an object having [redirecturl] property
                    }
                },

                columnDefs:
                    [{
                        targets: [0],//companyID
                        visible: false,
                        searchable: false
                    },
                    {
                        targets: [2],//contactname
                        orderable: false
                    },
                    {
                        targets: [3],//contactTitle
                        orderable: false
                    },
                    {
                        targets: [4],//CIty
                        orderable: false
                    },
                    {
                        targets: [5],//PostalCode
                        orderable: false
                    },
                    {
                        targets: [6],//country
                        orderable: false
                    },
                    {
                        targets: [7],//phone
                        visible: false,
                        searchable: false,
                        orderable: false
                    },
                    ],

                columns: [
                    { data: "CustomerID", name: "CustomerID", autoWidth: true },
                    { data: "CompanyName", name: "CompanyName", autoWidth: true },
                    { data: "ContactName", "title": "ContactName", name: "ContactName", autoWidth: true },
                    { data: "ContactTitle", name: "ContactTitle", autoWidth: true },
                    { data: "City", name: "City", autoWidth: true },
                    { data: "PostalCode", name: "PostalCode", autoWidth: true },
                    { data: "Country", name: "Country", autoWidth: true },
                    { data: "Phone", name: "Phone", title: "Status", autoWidth: true },
                ]
            });
        });

--------------
Demo Controller file is:
public ActionResult ShowGrid()
        {                
            return View();
        }

        public ActionResult Create()
        {

            return View();
        }
    public ActionResult LoadData()
        {
            try
            {
                //Creating instance of DatabaseContext class  
                using (DatabaseContext _context = new DatabaseContext())
                {
                    var draw = Request.Form.GetValues("draw").FirstOrDefault();
                    var start = Request.Form.GetValues("start").FirstOrDefault();
                    var length = Request.Form.GetValues("length").FirstOrDefault();
                    var sortColumn = Request.Form.GetValues("columns[" + Request.Form.GetValues("order[0][column]").FirstOrDefault() + "][name]").FirstOrDefault();
                    var sortColumnDir = Request.Form.GetValues("order[0][dir]").FirstOrDefault();
                    var searchValue = Request.Form.GetValues("search[value]").FirstOrDefault();


                    //Paging Size (10,20,50,100)    
                    int pageSize = (length != null && Convert.ToInt32(length) > 0) ? Convert.ToInt32(length) : 0;
                    int skip = start != null ? Convert.ToInt32(start) : 0;
                    int recordsTotal = 0;

                    // Getting all Customer data
                    var customerData = (from tempcustomer in _context.Customers
                                        where 1==2 select tempcustomer);

                    //Sorting    
                    if (!(string.IsNullOrEmpty(sortColumn) && string.IsNullOrEmpty(sortColumnDir)))
                    {
                        customerData = customerData.OrderBy(sortColumn + " " + sortColumnDir);
                    }
                    //Search    
                    if (!string.IsNullOrEmpty(searchValue))
                    {
                        customerData = customerData.Where(m => m.CompanyName == searchValue);
                    }

                    //total number of rows count     
                    recordsTotal = customerData.Count();
                    //Paging     
                    var data = customerData.Skip(skip).Take(recordsTotal).ToList();

                    //Returning Json Data
                    return Json(new { draw = draw, recordsFiltered = recordsTotal, recordsTotal = recordsTotal, data = data });
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

        }

1 Ответов

Рейтинг:
0

F-ES Sitecore

Делайте то, о чем вас уже просят комментарии в вашем коде

if (data.recordsTotal == 0)
                            window.location.href = data.redirecturl; // your action should return an object having [redirecturl] property


Если recordsTotal равен 0 из-за отсутствия записей, он будет перенаправлен на url-адрес, указанный в параметре redirecturl ваших возвращаемых данных. Так что посмотрите на свои возвращенные данные;

return Json(new { draw = draw, recordsFiltered = recordsTotal, recordsTotal = recordsTotal, data = data })


Есть ли параметр "redirecturl" в ваших возвращаемых данных? Нет, поэтому разработайте url-адрес вашей страницы "добавить"\action, который должен быть показан без каких-либо результатов, и верните его вместе с вашим json в качестве свойства с именем redirecturl.