2017-05-04 4 views
2

私は0:15、0:30、0:45、1:00のような時間値の列を持つデータグリッドを持っています。文字列セルの値を秒に変換する

row.Cells [2]の値が1のときの値が3600であるため、バックカラーを赤にしたいと思います。秒に変換してからsearchValueよりも高いかどうかを確認する必要があります。私は同等の場合をチェックすることができたが、私はそれを秒に変換し、それが高いかどうかをチェックする方法を知らない。

 SqlDataAdapter asdf; 
     DataTable ss; 
     asdf = new SqlDataAdapter("SELECT Firma, Czas, Opis,ID FROM Rok2016 WHERE [email protected] AND [email protected]", con); 
     asdf.SelectCommand.Parameters.AddWithValue("@DT", monthCalendar1.SelectionRange.Start.Date); 
     asdf.SelectCommand.Parameters.AddWithValue("@Kto", label3.Text); 
     ss = new DataTable(); 

     asdf.Fill(ss); 
     dataGridView1.DataSource = ss; 

     String searchValue = "3600"; 
     foreach (DataGridViewRow row in dataGridView1.Rows) 



     if (row.Cells[2].Value.ToString().Equals(searchValue)) 

      { 

       row.DefaultCellStyle.BackColor = Color.Red; 
      } 

答えて

0

もしrow.Cells[2].Value.ToString()戻っ「0時15分」または「1時14」または「15:53」、そしてあなたは、時間と分の値の配列に分離intにそれを解析することができますように別の番号、私が知っている、searchValueInSecondsStringに名前searchValueを変更したことを

String searchValueInSecondsString = "3600"; 

foreach (DataGridViewRow row in dataGridView1.Rows) 
{ 
    var separateHourAndMinutes = row.Cells[2].Value.ToString().Split(':'); 

    // safety first! ;) 
    if (separateHourAndMinutes.Length != 2) 
    { 
     Console.WriteLine("Wrong time value from grid!"); 
    } 
    else 
    { 
     // safety second! ;) 
     if (int.TryParse(separateHourAndMinutes[0], out var hours) && int.TryParse(separateHourAndMinutes[1], out var minutes) && int.TryParse(searchValueInSecondsString, out var searchValue)) 
     { 
      // if you want to make something red, if the search value and the time value are higher and equal, use >= instead of > 
      if (new TimeSpan(hours, minutes, 0).TotalSeconds > searchValue) 
      { 
       Console.WriteLine("I make it red!"); 
      } 
     } 
    } 
} 

お知らせ、次の例のように、あなたはそれをcomparseすることができ、すべての合計秒と最後を取得し、TimeSpanのに変換し、(同様searchValueInSecondsString)検索値に必要な入力(秒と文字列)

PS:そのコードでlitteビットを再生したい場合は、https://dotnetfiddle.net/1OVfDy

+0

row.Cells [2] .Value.ToString()が00:15 00:30などを返します。何とか変換する必要があると思いますので3600とタイプしました。 00:15から秒にしてからそれを時間と比較してください。 –

+0

私は自分の答えを更新しました。それはあなたのために働くはずです。機能に加えて、いくつかの安全機能を追加しました。 –

関連する問題