【发布时间】:2021-08-25 17:53:46
【问题描述】:
我有一个页面显示从数据库中提取的数据表。过滤数据以显示最近 6 个月的数据。我想在页面上放置一个复选框,用户可以单击该复选框在查看所有数据从所有时间到过滤的最后 6 个月数据之间切换。这是我目前所拥有的:
HTML:
<input type="checkbox" name="datefilter" class="form-check-input" onChange="this.form.submit()">
Display All Time Data
控制器:
public ActionResult Index(string[] datefilter, string SearchString, string sortOrder, int? page)
{
DateTime testDate = DateTime.Now.AddMonths(-3);
var PatientID = from p in db.PatientTbls
select p;
if (datefilter == null)
{
PatientID = PatientID.Where(s => s.CreationDate >= testDate);
}
PatientID = PatientID.OrderByDescending(s => s.CreationDate);
if (!String.IsNullOrEmpty(SearchString))
{
PatientID = PatientID.Where(s => s.ReadOnModel.Contains(SearchString) || s.ToBeMarkedOnLaser.Contains(SearchString) || s.Brand.Contains(SearchString));
}
return View(PatientID.ToList().ToPagedList(page ?? 1, 150));
}
我的想法是让复选框重新提交带有新选中值的表单,然后“if”语句将过滤或不过滤结果。问题是当我选中该框时,它会刷新页面,然后清除该复选框。同样,一旦我选中该框一次,它就永远不会运行日期过滤器查询。任何帮助都会很棒。
PS。我是新手,所以请多多包涵。
【问题讨论】:
-
你为什么不使用 jquery 并进行 ajax 调用?
-
为什么不将整个结果拉到客户端并根据用户的选择在前端应用过滤器?这将减少到服务器的往返次数。
标签: c# asp.net-mvc checkbox