C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: C#でデータグリッド表示について


(過去ログ 49 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■27120 / inTopicNo.1)  C#でデータグリッド表示について
  
□投稿者/ 初心者 (178回)-(2008/10/28(Tue) 12:09:06)

分類:[C#] 

2008/10/28(Tue) 13:51:58 編集(投稿者)


いつも参考にさせて頂いております。

C#で年と月を入力するとあるデータベースを読み込み
次の様な表示を行いたいのですがどうすれば良いのでしょうか?
@入力した月に対応した日にちを列見出しに表示し、土曜と日曜
 の項目名の部分の背景色を変えたい。(あくまでも見出し部分のみで
 列全体ではありません。)
Aデータの開始日付〜終了日付のセルの背景色を黄に変えたい。
Bその月に対応した表示にする。(31日・30日・28日・29日に対応)


| A | B| C| D| E| F| G| H|・・・| AD | AE | AF |
---------------------------------------------------------------------
1| |1|2|3|4|5|6|7|・・・|29|30|31|
---------------------------------------------------------------------
2|A商品 | | | |○|○|○|○|・・・| | | |
---------------------------------------------------------------------
3| | | | | | | | |・・・| | | |


例えば、C2が土曜で青、D3が日曜で赤(以降末日までの対応した曜日)
、開始日付が4日終了日付が7日とするとE2,F2,G2,H2を黄にしたい。
(グリッド表示でExcelの様にC2とか表現するのか分かりませんが)

セルの色を変えるのは、よく書かれているので調べればわかると思いますが
入力した月に対応したグリッド表示の仕方と曜日の求め方や見出し部分の
背景色の変え方がよく分かりません。

使用環境は、WindowsXP で Visual C# 2008 Express Edition です。

うまく説明できなくて申し訳ありませんが、ご教示頂けましたら助かります。
よろしくお願いいたします。
引用返信 編集キー/
■27138 / inTopicNo.2)  Re[1]: C#でデータグリッド表示について
□投稿者/ オショウ (51回)-(2008/10/28(Tue) 21:25:30)
> 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

  こんな感じで表のイメージはできるでしょう。

※ 今日はヒマだったので、作ってみました・・・

以上。参考までに
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -