Shy*_*uan 1 c# datetime combobox datagridview date
我有一个dataGridView_flaggedComments地方叫有一个列Comments_Date(格式为31/12/2014 01:10:11 PM),我正在添加日期部分comboBox_stockDates,如果有几个相同的日期,例如31/12/2014,我只希望它出现一次comboBox_stockDates,而不是重复.
这是我的代码,它将列出每行中的所有日期和时间,但不会获取仅限日期的部分.任何人都可以指出我应该纠正我的代码的哪一部分?或者如果有指导的话会很棒.如果我忽略了任何类似的问题,我会道歉.非常感谢你!
private void PopulateStockDatesIndex()
{
comboBox_stockDates.Items.Clear();
comboBox_stockDates.Items.Add("Choose to Filter");
comboBox_stockDates.FormatString = "dd-MM-yyyy";
DataView dataview_filterDate = (DataView)(dataGridView_flaggedComments.DataSource);
foreach (DataRowView rowView in dataview_filterDate)
{
DataRow row = rowView.Row;
for (int i = 0; i < dataGridView_flaggedComments.Rows.Count - 1; i++)
{
if (dataGridView_flaggedComments.Rows[i].Cells["Comments_Date"].Value.ToString() != "")
{
if (!comboBox_stockDates.Items.Contains(row[1].ToString()))
{
comboBox_stockDates.Items.Add(row[1].ToString());
}
comboBox_stockDates.SelectedIndex = 0;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
第2版:
private void PopulateStockDatesIndex()
{
comboBox_stockDates.Items.Clear();
comboBox_stockDates.Items.Add("Choose to Filter");
comboBox_stockDates.FormatString = "dd-MM-yyyy";
foreach (DataGridViewRow row in dataGridView_flaggedComments.Rows)
{
for (int i = 0; i < dataGridView_flaggedComments.Rows.Count - 1; i++)
{
if (dataGridView_flaggedComments.Rows[i].Cells["Comments_Date"].Value.ToString() != "")
{
string date = row.Field<DateTime>(1).ToString("dd-MM-yyyy");
if (!comboBox_stockDates.Items.Contains(date))
{
comboBox_stockDates.Items.Add(date);
}
comboBox_stockDates.SelectedIndex = 0;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
DateTime.ToString返回DateTime包含时间部分的字符串表示.您可以使用dt.ToString("d"),dt.ToShortDateString或者dt.ToString("dd-MM-yyyy")如果您只想要日期部分.
string date = row.Field<DateTime>(1).ToString("dd-MM-yyyy");
if (!comboBox_stockDates.Items.Contains(date))
{
comboBox_stockDates.Items.Add(date);
}
Run Code Online (Sandbox Code Playgroud)
你也可以使用LINQ哪个也可以根据需要对日期进行排序:
string[] distinctDates = dataview_filterDate.Table.AsEnumerable()
.Select(row => row.Field<DateTime>(1).Date) // Date is used to get Distinct dates by day
.Distinct()
.OrderBy(dt => dt)
.Select(dt => dt.ToString("dd-MM-yyyy"))
.ToArray();
comboBox_stockDates.Items.AddRange(distinctDates);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
971 次 |
| 最近记录: |