我正在努力解决以下问题。我有一个带有日期的DataTable。可以包含多个时间行的日期。现在我想点击日历上的日期,它会将当天的时间记录放入列表框中,以便我可以选择时间。
我被困住了,并且用谷歌搜索了,但此时我还是瞎了。
gridview中的数据表输出:
Datum
-----------------
22-09-14 13:05:00
22-09-14 13:05:18
23-09-14 13:05:36
23-09-14 13:05:54
23-09-14 13:06:12
21-09-14 14:00:01
21-09-14 15:00:01
21-09-14 16:00:01
21-09-14 17:00:01
calander SelectionChanged
事件中的代码:
// Create datatable
DataTable dt = new DataTable();
string FileName = "C:\\ProjectName\\data\\data.dat";
var lines = File.ReadAllLines(FileName);
// Make date column
dt.Columns.Add("Datum", typeof(DateTime));
// add rows
for (int i = 2; i < lines.Count(); i++)
{
DataRow dr = dt.NewRow();
string[] values = lines[i].Split(new char[] { ',' }).Select(x => x.Replace("\"", "")).ToArray();
for (int j = 0; j < values.Count() && j < 1; j++)
dr[j] = values[j];
dt.Rows.Add(dr);
}
// Convert selected date
string currentDate = e.SelectedDates.Count - 1 >= 0 ? e.SelectedDates[e.SelectedDates.Count - 1].Date.ToString("dd-MM-yyyy") : "none";
// Print selected date to see format
Label1.Text = currentDate;
// Create dataview and apply filter
DataView dv = new DataView(dt);
dv.RowFilter = "Datum = #" + currentDate + "#";
dv.RowStateFilter = DataViewRowState.ModifiedCurrent;
dv.Sort = "Datum DESC";
// dataview to listbox
lbSource.DataSource = dv;
lbSource.DataTextFormatString = "{0:dd-MM-yyyy HH:mm}";
lbSource.DataTextField = "Datum";
lbSource.DataValueField = "Datum";
lbSource.DataBind();
dv过滤器给了我:
字符串未被识别为有效的DateTime。
使用以下行停止调试,并且&#34; String未被识别为有效的DateTime。&#34;:
dv.RowFilter = "Datum = #" + currentDate + "#";
currentdate
附带正确的日期:22-09-2014(dd-MM-yyyy)
如果有人可以帮助我,非常感谢:)
答案 0 :(得分:-1)
基本上,.rowfilter
比较将日期作为Mm/dd/yyyy
作为比较。它将看到20/10/2018作为无效日期。低于12天即可使用。
因此,日期在您的datatable
中存储为dd/mm/yyyy
。
除非您将日期存储格式更改为mm/dd/yyyy
,否则我认为您不能rowsfilter
。