Как обновить результаты с указанием даты начала и окончания, введенных пользователем - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть таблица с датами и именем, и у меня есть 2 даты Datum1 и Datum2, когда пользователи вставляют для ограничения результатов между этими двумя датами, но это не работает. Эти 2 даты находятся в отдельной модели, и я создал отдельный контроллер.Мне не нужно сохранять эти даты в моей базе данных только для ограничения выходных данных. Вот мой контроллер:

   [HttpGet]
    // GET: PregledPoDatumu
    public ActionResult Index()
    {
        DataTable dtblRezultat = new DataTable();
        PregledPoDatumu pregledPoDatumu = new PregledPoDatumu();
        using (SqlConnection sqlCon = new SqlConnection(
             ConfigurationManager.ConnectionStrings["TestCS"].ConnectionString))
        {
            sqlCon.Open();
            SqlDataAdapter sqlDa = new SqlDataAdapter("SELECT * FROM Kontrola ORDER BY Datum", sqlCon);
            sqlDa.Fill(dtblRezultat);

        }

        return View(dtblRezultat);
    }


    [HttpGet]

    // GET: PregledPoDatumu/Create
    public ActionResult Create()
    {
        return View(new PregledPoDatumu());
    }

    // POST: PregledPoDatumu/Create
    [HttpPost]
    public ActionResult Create(PregledPoDatumu pregledPoDatumu)
    {

        DataTable dtblRezultat = new DataTable();
        using (SqlConnection sqlCon = new SqlConnection(
            ConfigurationManager.ConnectionStrings["TestCS"].ConnectionString))
        {
            sqlCon.Open();
            if (pregledPoDatumu.Datum1 > pregledPoDatumu.Datum2)
            {
                ModelState.AddModelError("Datum1", "start date must be before end date");
                return View();
            }
            if(pregledPoDatumu.Datum1 > DateTime.Now)
            {
                ModelState.AddModelError("Datum1", "Unesite datum prije današnjeg");
                return View();
            }
            if(pregledPoDatumu.Datum2 > DateTime.Now)
            {
                ModelState.AddModelError("Datum2", "Unesite datum do današnjeg");
                return View();
            }
            if(pregledPoDatumu.Datum1 == DateTime.MinValue){
                ModelState.AddModelError("Datum1", "Unesite datum ");
                return View();
            }
            if (pregledPoDatumu.Datum2 == DateTime.MinValue)
            {
                ModelState.AddModelError("Datum2", "Unesite datum ");
                return View();
            }






            string query = "SELECT * FROM Kontrola where Datum > @Datum1 and Datum < @Datum2";
            SqlDataAdapter sqlDa = new SqlDataAdapter(query, sqlCon);
            sqlDa.SelectCommand.Parameters.AddWithValue("@Datum1", pregledPoDatumu.Datum1);
            sqlDa.SelectCommand.Parameters.AddWithValue("@Datum2", pregledPoDatumu.Datum2);
            sqlDa.Fill(dtblRezultat);


        }
        return RedirectToAction("Index");
}

Что я должен изменить, чтобы, когда пользователь входит 01.01.2014 и 01.01.2017показывать только результаты между этими двумя датами?В этом случае я сделал мою таблицу не обновляется и по-прежнему показывает все результаты в таблице?

Модель:

namespace WebApplication6.Models
{
    public class PregledPoDatumu
    {
        [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
        [DataType(DataType.Date)]
        public DateTime Datum1 { get; set; }

        [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
        [DataType(DataType.Date)]
        public DateTime Datum2 { get; set; }
    }
}

1 Ответ

0 голосов
/ 21 декабря 2018

Проблема в return RedirectToAction("Index") в методе Post.Это перенаправляет на индекс, но вы не передаете отфильтрованную таблицу данных.

Чтобы исправить это, вы можете изменить на return View("Index", dtblRezultat), это вернет представление Index из метода Post и передастdatatable dtblRezultat к представлению.

Есть и другие опции, вы можете изменить действие Index, чтобы получить параметры даты (или модель) и выполнить фильтрацию в действии Index.

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