|
> C#で年と月を入力するとあるデータベースを読み込み > 次の様な表示を行いたいのですがどうすれば良いのでしょうか? > @入力した月に対応した日にちを列見出しに表示し、土曜と日曜 > の項目名の部分の背景色を変えたい。(あくまでも見出し部分のみで > 列全体ではありません。) > Aデータの開始日付〜終了日付のセルの背景色を黄に変えたい。 > Bその月に対応した表示にする。(31日・30日・28日・29日に対応)
http://dobon.net/vb/dotnet/datagridview/index.html
ここ参考になりませんか?
あとDBからとありますが、SQL Server Express 2005 or 2008 ? DBから直接表示はこの場合難しいので、該当年・月の日毎にデータ抽出して DataGridViewに後からAddすることになりますが(多分)
C#ではありませんが・・・
Private Sub InitGrid(ByVal year As Integer, ByVal month As Integer)
With DataGridView1 .Columns.Clear()
.Columns.Add("ItemName", "商品名")
For i As Integer = 1 To GetLastDay(year, month) .Columns.Add("Day" + i.ToString("00"), i.ToString("00")) Next
For i As Integer = 1 To GetLastDay(year, month) Select Case GetWeekDay(year, month, i) Case DayOfWeek.Saturday .Columns("Day" + i.ToString("00")).DefaultCellStyle.BackColor = Color.Blue Case DayOfWeek.Sunday .Columns("Day" + i.ToString("00")).DefaultCellStyle.BackColor = Color.Red End Select Next
.Columns("ItemName").Width = 120 For i As Integer = 1 To GetLastDay(year, month) .Columns("Day" + i.ToString("00")).Width = 40 Next End With
End Sub
Private Function GetLastDay(ByVal year As Integer, ByVal month As Integer) As Integer
Dim dt1 As DateTime Dim dt2 As DateTime Dim day As Integer
If month = 2 Then dt1 = Date.Parse(year.ToString.Trim + "/" + month.ToString.Trim + "/28 0:0:0") dt2 = dt1.AddDays(1) If dt1.Month <> dt2.Month Then day = 28 Else day = 29 End If Else dt1 = Date.Parse(year.ToString.Trim + "/" + month.ToString.Trim + "/30 0:0:0") dt2 = dt1.AddDays(1) If dt1.Month <> dt2.Month Then day = 30 Else day = 31 End If End If
Return day
End Function
Private Function GetWeekDay(ByVal year As Integer, ByVal month As Integer, ByVal day As Integer) As DayOfWeek
Dim dt As DateTime
dt = Date.Parse(year.ToString.Trim + "/" + month.ToString.Trim + "/" + day.ToString.Trim + " 0:0:0")
Return dt.DayOfWeek
End Function
こんな感じで表のイメージはできるでしょう。
※ 今日はヒマだったので、作ってみました・・・
以上。参考までに
|