如何按小时对数据网格内部进行排序?我使用的XML文件没有格式,包含数据集和datagridview。
代码c#winforms:
FileStream stream = new FileStream("file.xml", FileMode.Open);
ds.readXml(stream);
Stream.Close();
datagridview1.DataSource = ds.Tables[0];
ds.Tables[0].DefaultView.Sort = "start asc";
XML文件
<?xml version="1.0" standalone="yes"?>
<Table>
<hours>
<Start>10:00 AM</Start>
</hours>
<hours>
<Start>11:00 AM</Start>
</hours>
<hours>
<Start>1:00 PM</Start>
</hours>
<hours>
<Start>2:00 PM</Start>
</hours>
</Table>
在我的输出上,它没有排序。 1:00 PM 下午2:00 10:00 AM 上午11:00
答案 0 :(得分:1)
您可以添加另一个DateType类型的列,并将其表达式设置为“start”列的名称,并使用此列进行排序:
FileStream stream = new FileStream("file.xml", FileMode.Open);
DataSet ds = new DataSet();
ds.ReadXml(stream);
ds.Tables[0].Columns.Add("Temp", typeof(DateTime), "Start");
stream.Close();
dataGridView1.DataSource = ds.Tables[0];
ds.Tables[0].DefaultView.Sort = "temp asc";
答案 1 :(得分:0)
看来数据是作为字符串加载的,而不是DateTime值。它正确地排序为字符串。是否要将其排序为日期,然后您需要将数据从string
转换为DateTime
。以下是转换数据的示例:
var accTable = new DataTable();
var columnSpec = new DataColumn("Date");
columnSpec.DataType = typeof(DateTime);
accTable.Columns.Add(columnSpec);
转换数据后,应将其排序为日期。
以下是关于在datagridview中转换数据的另一个问题:
How to programmatically convert column type in DataGridView C#?