2012-03-01 9 views
1

時間内にデータグリッドビューを並べ替えるにはどうすればいいですか?私は、データセットとデータグリッドビューを持つ形式のない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時 午後2:00 10:00 午前11:00

+0

ものは、私が試した文字列ではなく、日付... –

答えて

0

データが文字列ではなくDateTime値としてロードされていることが表示されます。それは文字列として適切にソートされています。日付としてソートしたいのですか?stringからDateTimeにデータを変換する必要があります。ここでは、データを変換する例です:

var accTable = new DataTable(); 

var columnSpec = new DataColumn("Date"); 
columnSpec.DataType = typeof(DateTime); 
accTable.Columns.Add(columnSpec); 

http://social.msdn.microsoft.com/Forums/en/csharplanguage/thread/e6b2aa61-bd1a-40f9-9e45-a538ed42c3d3

あなたはデータを変換したら、それは日付として並べ替える必要があります。

How to programmatically convert column type in DataGridView C#?

1

あなたはタイプDATETYPEの別の列を追加して、「開始」欄及びソート使用の名前に、式の設定ができます:ここで

は、DataGridViewのデータの変換についてのSO上の別の質問ですこのコラム:

 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"; 
+0

ですが、私は自分のアプリケーションを再起動した場合、私はエラーメッセージを持っている:「TEMP」という名前の列は既にこのデータテーブルに属しています。 – user1112847

+0

追加された列を削除することは可能ですか?アプリケーションを閉じるときに私は試みましたが、運はありません。 – user1112847