Серверная сторона Сортировка и подкачка Mvc - PullRequest
0 голосов
/ 16 января 2019

Привет, я разработал приложение Mvc, которое получает данные с сервера Sql с помощью оператора select. Мне нужно реализовать разбивку на страницы на стороне сервера и сортировку данных, я могу получить данные с помощью json и отобразить их. Это очень простая таблица для тестирования, и данные не очень большие.

    [HttpPost]
    public ActionResult GetList()
    {

        int start = Convert.ToInt32(Request["start"]);
        int length = Convert.ToInt32(Request["length"]);
        string sortColumnName = Request["columns[" + Request["order[0][column]"] + "][name]"];
        string sortDirection = Request["order[0][dir]"];
        List<YesNoModel> yesno = new List<YesNoModel>();
        using (SqlConnection sqlCon = new SqlConnection(ConfigurationManager.ConnectionStrings["TestApp"].ToString()))
        {

            YesNoModel yesNoMopdel = new YesNoModel(); 
            SqlCommand sqlCmd = new SqlCommand();
            sqlCmd.CommandType = CommandType.Text;
            sqlCmd.CommandText = "Select ynID,ynName FROM [Yes_No] WITH (NOLOCK)";
            sqlCmd.Connection = sqlCon;
            sqlCon.Open();
            using (SqlDataReader sdr = sqlCmd.ExecuteReader())
            {
                while (sdr.Read())
                {

                    yesno.Add(new YesNoModel
                    {
                        ynID = Convert.ToInt32(sdr["ynID"].ToString()),
                        ynName = sdr["ynName"].ToString(),
                        Action = "<a class='btn btn-info btn-xs' style='margin-top:6px'  href='" + this.Url.Action("Edit", "YesNo", new { Id = Convert.ToInt32(sdr["ynID"].ToString()) }) + "'>Edit</a>" + "<a class='btn btn-danger btn-xs' style='margin-top:6px' onclick='return confirm()' href='" + this.Url.Action("Delete", "YesNo", new { Id = Convert.ToInt32(sdr["ynID"].ToString()) }) + "'>Delete</a>"
                    });

                }

            }

        }
        yesno.OrderBy(sortColumnName + " " + sortDirection);
        yesno.Skip(start).Take(length);
        return Json(new { data = yesno }, JsonRequestBehavior.AllowGet);

    } 




$('.table').DataTable({
                "ajax": {
                    "url": "/YesNo/GetList",
                    "type": "POST",
                    "datatype": "json"
                },
                "columns": [
                    { "data": "ynID", "name": "ynID" },
                    { "data": "ynName", "name": "ynName" },
                    {"data":"Action","name":"Action"}
                ],
                "serverSide": "true",
                "processing":"true",
                "bDestroy": true

            });

Когда я нажимаю, чтобы сортировать во время работы в режиме отладки, я вижу, что он выбирает правильный столбец и изменяет направление сортировки, и я вижу, что таблица обрабатывает, но фактически не меняет порядок. Может кто-нибудь, пожалуйста, помогите мне.

Окно отладки

1 Ответ

0 голосов
/ 16 января 2019

попробуйте, если вы считаете, что OrderBy работает хорошо

    yesno = yesno.OrderBy(sortColumnName + " " + sortDirection).ToList();

причина, по которой это не работает, - yesno.OrderBy (sortColumnName + "" + sortDirection) возвращает стиль массива и генерирует новый.

это полностью отличается между сгенерированным единицей и yesno (который вы определили)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...