我正在将应用程序中的网格填充为透视样式。(使用SQL来LINQ和Lambda)
我正忙碌着引入过滤器文本框,当有一个正常的名称值要过滤时,它工作得很好。
我正在努力让一个筛选器工作特定于日期字段。我第一次尝试使用datetimepicker控件,无法让它工作,并开始考虑使用文本框筛选器来筛选特定的日期。
文本框过滤器部分工作。如果我输入一个部分数字,即2023或18等,它过滤网格上的值,无论是在日期或时间字段。
如果我以某种格式键入日期,网格将筛选为空白结果。使用的日期格式包括yyyy-MM-dd、yyyy/MM/dd、yyyy. MM. dd。
我似乎找不到一个适当的解决办法。
网格示例:Grid Example
private void PopulateGird()
{
var productivity = operationsEntities.Cases
.Where(x => x.Case_Status == 2)
.Where(b => b.Branches.Branch.Contains(txtBranch.Text))
.Where(t => t.TechResource.FullName.Contains(txtResource.Text))
.Where(s => s.StartDate.Value.ToString().Contains(txtStartDate.Text))
.GroupBy(d => new { d.Branches.Branch, d.TechResource.FullName, d.StartDate })
.Select(q => new
{
Branch = q.Key.Branch,
Resource = q.Key.FullName,
Date = q.Key.StartDate,
Total = q.Where(p => p.Primary_Call > 0).Count(),
Installation = q.Where(p => p.Primary_Call == 1).Count(),
DeInstallation = q.Where(p => p.Primary_Call == 2).Count(),
ReInstallation = q.Where(p => p.Primary_Call == 3).Count(),
Repair = q.Where(p => p.Primary_Call == 4).Count()
}).ToList() ;
gvProductivity.DataSource = productivity;
gvProductivity.Columns["DeInstallation"].HeaderText = "De-Installation";
gvProductivity.Columns["ReInstallation"].HeaderText = "Re-Installation";
gvProductivity.Columns["Total"].HeaderText = "Total Jobs";
有人能给我指出正确的方向吗?也许我遗漏了什么(很明显)或者忘记添加什么
谢谢
1条答案
按热度按时间fnvucqvd1#
因此,LINQ在尝试实现过滤器时根本不喜欢使用日期。我不得不在数据库中添加额外的列,其中日期被视为字符串而不是日期。添加此列后,我能够引用datetimepicker的字符串字段和字符串,并且它可以工作。可能不是最佳解决方案,但却是我需要的解决方案。
欢迎其他用户提供其他答案:D