Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Bindingsource筛选器工作不正常_C#_Filter_Datatable_Bindingsource_Advanceddatagrid - Fatal编程技术网

C# Bindingsource筛选器工作不正常

C# Bindingsource筛选器工作不正常,c#,filter,datatable,bindingsource,advanceddatagrid,C#,Filter,Datatable,Bindingsource,Advanceddatagrid,我需要用datepicker1和datepicker2过滤日期之间的ADGV,但我的代码只过滤日期,不管它只过滤日期之间的月份或年份。我尝试将我的var值设置为messagebox:带有2018年1月3日datetry的字符串为2018年3月1日datepicker1为2019年5月1日datepicker2为2019年5月27日,筛选结果如下:数据>='2019年5月1日',数据=”+dateTimePicker1.Value.Date+”,并将数据转换为datetime 过滤器可以是这样的(

我需要用datepicker1和datepicker2过滤日期之间的ADGV,但我的代码只过滤日期,不管它只过滤日期之间的月份或年份。我尝试将我的var值设置为messagebox:带有2018年1月3日datetry的字符串为2018年3月1日datepicker1为2019年5月1日datepicker2为2019年5月27日,筛选结果如下:数据>='2019年5月1日',数据<'2019年5月27日',我没有在列表中获得第一天,列表从第2天(2018年2月3日)开始。我尝试在csv文件中将格式更改为3.1.2018,但没有帮助

另外,我从.csv文件中获取数据,没有使用数据库,因此无法使用sql查询

我试着用谷歌搜索它,发现了类似的问题和解决方案,但没有一个和我完全一样,我不能将它应用到我的代码中,因为我不擅长编程,但我需要制作这个“过滤数据”程序

字符串行;
而((line=sr.ReadLine())!=null)
{
if(!(行包含(#))
{
string[]columns=line.Split(“;”);
字符串datynski=列[0];
DateTime dateTry=DateTime.ParseExact(datynski,“M/d/yyyy”,CultureInfo.InvariantCulture);
datatable1.Rows.Add(dateTry.ToSortDateString(),列[1],列[2],列[3]);
}
bindingsource1.DataSource=datatable1;
bindingsource1.Filter=“Data>=”+dateTimePicker1.Value.Date+”,并将数据转换为datetime

过滤器可以是这样的(使用LinQ):

公共静态列表筛选器日期(列表日期,
日期时间开始,日期时间结束)
{
返回日期。其中(日期=>IsDateInPeriod(日期、开始、结束))。
OrderBy(date=>date).ToList();
}
公共静态bool IsDateInPeriod(日期时间日期、日期时间开始、日期时间结束)
{
返回(日期>开始和日期<结束);
}
转换为日期时间

过滤器可以是这样的(使用LinQ):

公共静态列表筛选器日期(列表日期,
日期时间开始,日期时间结束)
{
返回日期。其中(日期=>IsDateInPeriod(日期、开始、结束))。
OrderBy(date=>date).ToList();
}
公共静态bool IsDateInPeriod(日期时间日期、日期时间开始、日期时间结束)
{
返回(日期>开始和日期<结束);
}
试试这个:

string line;
while ((line = sr.ReadLine()) != null) {
 if (!(line.Contains("#"))) {
    string[] columns = line.Split(';');

    //this two line are to make sure we have date on the field if you sure its date you can just use this: DateTime.Parse(columns[0]).ToString("yyyy-MM-dd");
    DateTime dateTry = new DateTime();
    DateTime.TryParse(columns[0], out dateTry);

    datatable1.Rows.Add(dateTry.ToString("yyyy-MM-dd"), columns[1], columns[2], columns[3]);    
}                   
bindingsource1.DataSource = datatable1;
adgv.DataSource = bindingsource1;
试试这个:

string line;
while ((line = sr.ReadLine()) != null) {
 if (!(line.Contains("#"))) {
    string[] columns = line.Split(';');

    //this two line are to make sure we have date on the field if you sure its date you can just use this: DateTime.Parse(columns[0]).ToString("yyyy-MM-dd");
    DateTime dateTry = new DateTime();
    DateTime.TryParse(columns[0], out dateTry);

    datatable1.Rows.Add(dateTry.ToString("yyyy-MM-dd"), columns[1], columns[2], columns[3]);    
}                   
bindingsource1.DataSource = datatable1;
adgv.DataSource = bindingsource1;

谢谢你的回复,我有点理解代码的作用,但是我应该如何用这个列表覆盖我的dataview并能够清除过滤器?如果我理解正确,我需要2个数据选择器(开始)(结束)和2个按钮(过滤器)(清除过滤器)在我的表单中?我会使用复选框来应用或不应用筛选器。您应该保存未筛选列表的实例,并在筛选时将数据源更改为筛选列表。抱歉,我无法将您的代码粘贴到我的代码上,我不明白我的adgv应该如何获得此列表,如果您与第一天错误,则不会显示任何消息。谢谢您的回复y、 我有点理解代码的作用,但是我应该如何用这个列表覆盖我的dataview并能够清除过滤器?如果我理解正确,我需要2个数据选择器(开始)(结束)和2个按钮(过滤器)(清除过滤器)在我的表单中?我会使用一个复选框来应用或不应用筛选器。您应该保存未筛选列表的一个实例,并在筛选时将数据源更改为筛选列表。抱歉,我无法将您的代码粘贴到我的代码上,我不明白我的adgv应该如何获得此列表,如果您与第一个日期有误,则不会显示任何消息
string line;
while ((line = sr.ReadLine()) != null) {
 if (!(line.Contains("#"))) {
    string[] columns = line.Split(';');

    //this two line are to make sure we have date on the field if you sure its date you can just use this: DateTime.Parse(columns[0]).ToString("yyyy-MM-dd");
    DateTime dateTry = new DateTime();
    DateTime.TryParse(columns[0], out dateTry);

    datatable1.Rows.Add(dateTry.ToString("yyyy-MM-dd"), columns[1], columns[2], columns[3]);    
}                   
bindingsource1.DataSource = datatable1;
adgv.DataSource = bindingsource1;