質問するログイン新規登録

質問編集履歴

2

コードをわかりやすく変更しました。

2018/02/21 01:59

投稿

picotoyou8
picotoyou8

スコア8

title CHANGED
File without changes
body CHANGED
@@ -9,6 +9,7 @@
9
9
  お手数をおかけいたしますが、よろしくお願いいたします。
10
10
 
11
11
  実際に作成したプログラムを追記いたします。
12
+ ```
12
13
  <%@ Page Language="VB" ContentType="text/html" %>
13
14
  <%@ Import Namespace="System.Data" %>
14
15
  <%@ Import Namespace="System.Data.SqlClient" %>
@@ -85,7 +86,7 @@
85
86
  </form>
86
87
  </body>
87
88
  </html>
88
-
89
+ ```
89
90
  上記の方法だと、1日に1セルしかないカレンダーが表示されるため、作業結果(status)によって作業ごとに色分けしたいのですが、実現できません。
90
91
  下にイメージを載せています。
91
92
  左が実現したいイメージで、右がプログラムの実行結果です。
@@ -94,4 +95,7 @@
94
95
  また、不可能な場合、どのような手段があるかを教えていただければありがたいです。
95
96
 
96
97
  よろしくお願いいたします。
97
- ![イメージ説明](fd99585afd60427e17a01edbed6eba27.png)
98
+ ![イメージ説明](fd99585afd60427e17a01edbed6eba27.png)
99
+
100
+ 失礼いたしました。
101
+ コードをわかりやすくしました。

1

実施内容とイメージを追記しました

2018/02/21 01:59

投稿

picotoyou8
picotoyou8

スコア8

title CHANGED
File without changes
body CHANGED
@@ -6,4 +6,92 @@
6
6
  不可能だった場合、実現するためにはどのような手段があるのでしょうか?
7
7
  また、行事はクリックすることで詳細な画面へ遷移させる予定です。
8
8
 
9
- お手数をおかけいたしますが、よろしくお願いいたします。
9
+ お手数をおかけいたしますが、よろしくお願いいたします。
10
+
11
+ 実際に作成したプログラムを追記いたします。
12
+ <%@ Page Language="VB" ContentType="text/html" %>
13
+ <%@ Import Namespace="System.Data" %>
14
+ <%@ Import Namespace="System.Data.SqlClient" %>
15
+ <%@ Import Namespace="Npgsql" %>
16
+ <%@ Import Namespace="NpgsqlTypes" %>
17
+ <script runat="Server">
18
+ ' それぞれの日付セルをレンダリングするタイミングで実行
19
+ Sub cal_DayRender(sender As Object, e As DayRenderEventArgs)
20
+ Dim dtNow As DateTime = DateTime.Now
21
+ Dim dtToday As DateTime = dtNow.Date
22
+ Dim calDate As DateTime
23
+ Dim subDate As Integer
24
+ Dim DA As NpgsqlDataAdapter
25
+ Dim DT As New DataTable
26
+ Dim SQLDS As New DataSet()
27
+ Dim ST As NpgsqlTransaction
28
+ Dim objCom As NpgsqlCommand
29
+ Dim conn As NpgsqlConnection
30
+ conn = New NpgsqlConnection("Server=xx.xx.xx.xx;Port=5432;User Id=abc;Password=xyz;Database=TEST_db")
31
+ ' 出力する日付セルに対応するスケジュール情報を抽出
32
+ objCom = New NpgsqlCommand("SELECT * FROM mobile.TEST_DATA WHERE plan_date=@sdate AND delete_flg is null;", conn, ST)
33
+ objCom.Parameters.Add("@sdate", e.Day.Date)
34
+ conn.Open()
35
+ DA = New NpgsqlDataAdapter(objCom)
36
+ DT = New DataTable
37
+ DA.Fill(SQLDS, "TEST_tbl")
38
+ ' 取得したスケジュール情報を基にLiteralControl(固定文字列)を生成し、日付セル(e.Call)配下のコントロールとして追加
39
+ For Each HeaderRow In SQLDS.Tables("TEST_tbl").Rows
40
+ e.Cell.Controls.Add(New LiteralControl("<br />" & String.Format("{0}:{1}", HeaderRow("task_name"), HeaderRow("status"))))
41
+ calDate = e.Day.Date
42
+ subDate = DateDiff(DateInterval.Day, dtToday, calDate)
43
+ Select Case HeaderRow("status")
44
+ Case 0
45
+ If subDate < 0 Then
46
+ e.Cell.BackColor = System.Drawing.Color.Gray
47
+ Else
48
+ e.Cell.BackColor = System.Drawing.Color.Yellow
49
+ End If
50
+ Case 2
51
+ e.Cell.BackColor = System.Drawing.Color.Green
52
+ Case 3
53
+ e.Cell.BackColor = System.Drawing.Color.Red
54
+ End Select
55
+ Next
56
+ conn.Close()
57
+ End Sub
58
+ </script>
59
+ <html>
60
+ <head>
61
+ <title>スケジュールをカレンダー上に表示する</title>
62
+ </head>
63
+ <body>
64
+ <form runat="Server">
65
+ <asp:Calendar id="cal" runat="server"
66
+ DayHeaderStyle-BackColor="#FFCC66"
67
+ onDayRender="cal_DayRender"
68
+ BorderWidth="1px" BorderColor="White" Font-Name="Verdana"
69
+ Font-Size="9pt" TitleStyle-BackColor="#FFCC66"
70
+ TitleStyle-Font-Size="12px" TitleStyle-Font-Bold="true"
71
+ DayStyle-VerticalAlign="Top" DayStyle-Height="50px"
72
+ DayStyle-Width="14%" SelectedDayStyle-BackColor="Navy"
73
+ ShowNextPrev="True" NextPrevFormat="FullMonth" BackColor="White" Font-Names="Verdana" ForeColor="Black" Height="190px" Width="700px">
74
+ <DayHeaderStyle Font-Bold="True" Font-Size="8pt"></DayHeaderStyle>
75
+
76
+ <DayStyle VerticalAlign="Top" Height="50px"></DayStyle>
77
+
78
+ <NextPrevStyle Font-Bold="True" Font-Size="8pt" ForeColor="#333333" VerticalAlign="Bottom" />
79
+ <OtherMonthDayStyle ForeColor="#999999" />
80
+ <SelectedDayStyle BackColor="#333399" ForeColor="White" />
81
+
82
+ <TitleStyle BackColor="White" Font-Bold="True" Font-Size="12pt" BorderColor="Black" BorderWidth="4px" ForeColor="#333399"></TitleStyle>
83
+ <TodayDayStyle BackColor="#CCCCCC" />
84
+ </asp:Calendar>
85
+ </form>
86
+ </body>
87
+ </html>
88
+
89
+ 上記の方法だと、1日に1セルしかないカレンダーが表示されるため、作業結果(status)によって作業ごとに色分けしたいのですが、実現できません。
90
+ 下にイメージを載せています。
91
+ 左が実現したいイメージで、右がプログラムの実行結果です。
92
+ まず、知りたいのは、calendarでこのようなことが実現可能なのでしょうか?
93
+ 可能なのでしたら、方法を教えていただければありがたいです。
94
+ また、不可能な場合、どのような手段があるかを教えていただければありがたいです。
95
+
96
+ よろしくお願いいたします。
97
+ ![イメージ説明](fd99585afd60427e17a01edbed6eba27.png)