近來一直在加班,基本上沒有個人時間。是以更新不會很即時。
長話短說,先從界面代碼開始吧。界面代碼很簡單,如下所示:
<a href="http://www.cnblogs.com/codelove/archive/2011/05/28/2060806.html#">?</a>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<code> </code><code>xmlns:BubbleCremeTheme</code><code>=</code><code>"System.Windows.Controls.Theming;assembly=System.Windows.Controls.Theming.BubbleCremeTheme"</code>
<code> </code><code>mc:Ignorable</code><code>=</code><code>"d"</code>
<code> </code><code>d:DesignHeight</code><code>=</code><code>"300"</code> <code>d:DesignWidth</code><code>=</code><code>"400"</code> <code>Loaded</code><code>=</code><code>"UserControl_Loaded"</code><code>></code>
<code> </code><code><</code><code>toolkit:BubbleCremeTheme</code><code>></code>
<code> </code><code><</code><code>StackPanel</code> <code>Name</code><code>=</code><code>"stackPanel1"</code> <code>FlowDirection</code><code>=</code><code>"LeftToRight"</code> <code>HorizontalAlignment</code><code>=</code><code>"Left"</code><code>></code>
<code> </code><code><</code><code>StackPanel</code> <code>Orientation</code><code>=</code><code>"Vertical"</code><code>></code>
<code> </code><code><</code><code>TextBlock</code> <code>Height</code><code>=</code><code>"23"</code> <code>Name</code><code>=</code><code>"txtTitle"</code> <code>HorizontalAlignment</code><code>=</code><code>"Center"</code> <code>Text</code><code>=</code><code>"标題"</code> <code>FontSize</code><code>=</code><code>"18"</code> <code>FontWeight</code><code>=</code><code>"Bold"</code> <code>Opacity</code><code>=</code><code>"0.7"</code> <code>RenderTransformOrigin</code><code>=</code><code>"0.5,0.5"</code> <code>></code>
<code> </code><code><</code><code>TextBlock.RenderTransform</code><code>></code>
<code> </code><code><</code><code>CompositeTransform</code><code>/></code>
<code> </code><code></</code><code>TextBlock.RenderTransform</code><code>></code>
<code> </code><code><</code><code>TextBlock.Foreground</code><code>></code>
<code> </code><code><</code><code>LinearGradientBrush</code> <code>EndPoint</code><code>=</code><code>"0.5,1"</code> <code>MappingMode</code><code>=</code><code>"RelativeToBoundingBox"</code> <code>StartPoint</code><code>=</code><code>"0.5,0"</code><code>></code>
<code> </code><code><</code><code>GradientStop</code> <code>Color</code><code>=</code><code>"Black"</code> <code>Offset</code><code>=</code><code>"1"</code><code>/></code>
<code> </code><code><</code><code>GradientStop</code> <code>Color</code><code>=</code><code>"#FFE49C9C"</code><code>/></code>
<code> </code><code></</code><code>LinearGradientBrush</code><code>></code>
<code> </code><code></</code><code>TextBlock.Foreground</code><code>></code>
<code> </code><code></</code><code>TextBlock</code><code>></code>
<code> </code><code><</code><code>StackPanel</code> <code>Orientation</code><code>=</code><code>"Horizontal"</code> <code>HorizontalAlignment</code><code>=</code><code>"Right"</code><code>></code>
<code> </code>
<code> </code><code><</code><code>Button</code> <code>Content</code><code>=</code><code>"一鍵标記為完成"</code> <code>Name</code><code>=</code><code>"btnFilishAll"</code> <code>Width</code><code>=</code><code>"130"</code> <code>Margin</code><code>=</code><code>"5,0,5,0"</code> <code>Click</code><code>=</code><code>"btnFilishAll_Click"</code> <code>/></code>
<code> </code><code><</code><code>Button</code> <code>Content</code><code>=</code><code>"全屏"</code> <code>Name</code><code>=</code><code>"BtnFullScreen"</code> <code>Width</code><code>=</code><code>"100"</code> <code>Margin</code><code>=</code><code>"5,0,5,0"</code> <code>Click</code><code>=</code><code>"BtnFullScreen_Click"</code> <code>/></code>
<code> </code><code><</code><code>Button</code> <code>Content</code><code>=</code><code>"送出"</code> <code>Name</code><code>=</code><code>"btnSubmit"</code> <code>Width</code><code>=</code><code>"100"</code> <code>Click</code><code>=</code><code>"Button_Click"</code> <code>Margin</code><code>=</code><code>"5,0,5,0"</code><code>/></code>
<code> </code><code></</code><code>StackPanel</code><code>></code>
<code> </code><code><</code><code>ScrollViewer</code> <code>HorizontalContentAlignment</code><code>=</code><code>"Left"</code> <code>HorizontalAlignment</code><code>=</code><code>"Left"</code> <code>HorizontalScrollBarVisibility</code><code>=</code><code>"Auto"</code> <code>VerticalScrollBarVisibility</code><code>=</code><code>"Auto"</code> <code>MaxHeight</code><code>=</code><code>"513"</code><code>></code>
<code> </code><code><</code><code>ScrollViewer.BorderBrush</code><code>></code>
<code> </code><code><</code><code>LinearGradientBrush</code> <code>EndPoint</code><code>=</code><code>"0.5,1.5"</code> <code>StartPoint</code><code>=</code><code>"0.5,0"</code><code>></code>
<code> </code><code><</code><code>GradientStop</code> <code>Color</code><code>=</code><code>"#FFE0E3BC"</code><code>/></code>
<code> </code><code><</code><code>GradientStop</code> <code>Color</code><code>=</code><code>"#FF6C6C5C"</code> <code>Offset</code><code>=</code><code>"1"</code><code>/></code>
<code> </code><code></</code><code>LinearGradientBrush</code><code>></code>
<code> </code><code></</code><code>ScrollViewer.BorderBrush</code><code>></code>
<code> </code><code><</code><code>Border</code> <code>BorderBrush</code><code>=</code><code>"#FF333333"</code> <code>BorderThickness</code><code>=</code><code>"2"</code> <code>Background</code><code>=</code><code>"#FFC1C1C1"</code> <code>></code>
<code> </code><code><</code><code>Grid</code> <code>x:Name</code><code>=</code><code>"gdPlans"</code> <code>Background</code><code>=</code><code>"#FFC1C1C1"</code> <code>MouseRightButtonDown</code><code>=</code><code>"gdPlans_MouseRightButtonDown"</code><code>></code>
<code> </code><code></</code><code>Grid</code><code>></code>
<code> </code><code></</code><code>Border</code><code>></code>
<code> </code><code></</code><code>ScrollViewer</code><code>></code>
<code> </code><code></</code><code>StackPanel</code><code>></code>
<code> </code><code></</code><code>StackPanel</code><code>></code>
<code> </code><code></</code><code>toolkit:BubbleCremeTheme</code><code>></code>
<code></</code><code>UserControl</code><code>></code>
值得注意的是,這裡用到了Silverlight 4.0工具包裡面的BubbleCremeTheme主題。在使用的時候,注意引用,如 “xmlns:BubbleCremeTheme="System.Windows.Controls.Theming; assembly=System.Windows.Controls.Theming.BubbleCremeTheme"”。然後需要注意的是,使用了 ScrollViewer 實作滾動條,在ScrollViewer 裡面放了一個Border 控件,用于繪制邊框。在Border 控件裡面,用到了Grid 控件。所有的資料都是基于Grid 控件生成的。
界面元素定義好了。接下來如下公共屬性:
46
<code>#region 公共屬性</code>
<code> </code><code>/// <summary></code>
<code> </code><code>/// 日期格式(day、week、month)</code>
<code> </code><code>/// </summary></code>
<code> </code><code>public</code> <code>string</code> <code>DateType {</code><code>get</code><code>;</code><code>set</code><code>; }</code>
<code> </code><code>/// 行号</code>
<code> </code><code>public</code> <code>int</code> <code>RowIndex {</code><code>get</code><code>;</code><code>set</code><code>; }</code>
<code> </code><code>/// 開始時間</code>
<code> </code><code>public</code> <code>DateTime StartDate {</code><code>get</code><code>;</code><code>set</code><code>; }</code>
<code> </code><code>/// 設定日期列數</code>
<code> </code><code>public</code> <code>int</code> <code>DateColCount {</code><code>get</code><code>;</code><code>set</code><code>; }</code>
<code> </code><code>/// 文本列列數</code>
<code> </code><code>public</code> <code>int</code> <code>NameColumns {</code><code>get</code><code>;</code><code>set</code><code>; }</code>
<code> </code><code>/// 計劃列頭</code>
<code> </code><code>public</code> <code>string</code><code>[] PlanHeads {</code><code>get</code><code>;</code><code>set</code><code>; }</code>
<code> </code><code>/// 日期列背景色</code>
<code> </code><code>public</code> <code>Color DayBackGroundColor {</code><code>get</code><code>;</code><code>set</code><code>; }</code>
<code> </code><code>/// 資料</code>
<code> </code><code>List<PlansData> LstPlansData {</code><code>get</code><code>;</code><code>set</code><code>; }</code>
<code> </code><code>/// 是否已經顯示設定完成的提示</code>
<code> </code><code>public</code> <code>bool</code> <code>HasShowSetFilishTip {</code><code>get</code><code>;</code><code>set</code><code>; }</code>
<code> </code><code>Dictionary<</code><code>string</code><code>,</code><code>string</code><code>> dicInitParams;</code>
<code> </code><code>//行背景(用于時間段)</code>
<code> </code><code>private</code> <code>static</code> <code>List<ImageBrush> RowBackGroundLst;</code>
<code> </code><code>private</code> <code>ImageBrush FilishImageBrush;</code>
<code> </code><code>/// 周的日數(預設7)</code>
<code> </code><code>int</code> <code>_weekDayCount;</code>
<code> </code><code>#endregion</code>
<code>屬性定義好了,那麼這些值是怎麼傳遞過來的呢?使用的是InitParams。如下面代碼:</code>
<code> </code>
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<code>public</code> <code>ShowPlans()</code>
<code>{</code>
<code> </code><code>try</code>
<code> </code><code>{</code>
<code> </code><code>InitializeComponent();</code>
<code> </code><code>SetInitialValue();</code>
<code> </code><code>#region 設定顯示的時間段</code>
<code> </code><code>if</code> <code>(DateType ==</code><code>"day"</code> <code>&& txtTitle.Text.Length > 0)</code>
<code> </code><code>{</code>
<code> </code><code>txtTitle.Text +=</code><code>string</code><code>.Format(</code><code>"({0}~{1})"</code><code>, StartDate.ToShortDateString(), StartDate.AddDays(DateColCount).ToShortDateString());</code>
<code> </code><code>}</code>
<code> </code><code>}</code>
<code> </code><code>catch</code> <code>(Exception ex)</code>
<code> </code><code>MessageBox.Show(</code><code>"參數初始化出錯:"</code> <code>+ ex.Message,</code><code>"錯誤"</code><code>, MessageBoxButton.OK);</code>
<code>}</code>
<code>#region 參數初始化</code>
<code>/// <summary></code>
<code>/// 資料初始化</code>
<code>/// StartDate:開始日期,預設為目前時間</code>
<code>/// DateType:日期類型,可選值為(day、week、month),預設為day</code>
<code>/// DateColCount:日期列數,day預設為30,week預設為10,month預設為12</code>
<code>/// Title:标題</code>
<code>/// PlanHeads:文字标頭,多列需用“;”分隔。值需用Url編碼。</code>
<code>/// Data:資料。格式為Json,需用Url編碼。映射的類為PlansData。</code>
<code>/// DayBackGroundColor:日期列背景色</code>
<code>/// WeekDayCount:周涵蓋的天數(預設7)</code>
<code>/// OnlyResponseHasEdit:僅僅隻輸出編輯項</code>
<code>/// </summary></code>
<code>private</code> <code>void</code> <code>SetInitialValue()</code>
<code> </code><code>RowIndex = 0;</code>
<code> </code><code>#region 設定預設值</code>
<code> </code><code>StartDate = DateTime.Now;</code>
<code> </code><code>DateColCount = 30;</code>
<code> </code><code>DateType =</code><code>"day"</code><code>;</code>
<code> </code><code>NameColumns = 1;</code>
<code> </code><code>DayBackGroundColor = Colors.White;</code>
<code> </code><code>HasShowSetFilishTip =</code><code>false</code><code>;</code>
<code> </code><code>#region 圖檔畫刷</code>
<code> </code><code>RowBackGroundLst =</code><code>new</code> <code>List<ImageBrush>()</code>
<code> </code><code>new</code> <code>ImageBrush()</code>
<code> </code><code>ImageSource=</code><code>new</code> <code>BitmapImage(</code><code>new</code> <code>Uri(</code><code>"plink.png"</code><code>, UriKind.Relative))</code>
<code> </code><code>},</code>
<code> </code><code>ImageSource=</code><code>new</code> <code>BitmapImage(</code><code>new</code> <code>Uri(</code><code>"blue.png"</code><code>, UriKind.Relative))</code>
<code> </code><code>ImageSource=</code><code>new</code> <code>BitmapImage(</code><code>new</code> <code>Uri(</code><code>"red.png"</code><code>, UriKind.Relative))</code>
<code> </code><code>ImageSource=</code><code>new</code> <code>BitmapImage(</code><code>new</code> <code>Uri(</code><code>"green.png"</code><code>, UriKind.Relative))</code>
<code> </code><code>};</code>
<code> </code><code>FilishImageBrush =</code>
<code> </code><code>{</code>
<code> </code><code>ImageSource =</code><code>new</code> <code>BitmapImage(</code><code>new</code> <code>Uri(</code><code>"red.png"</code><code>, UriKind.Relative))</code>
<code> </code><code>};</code>
<code> </code><code>#endregion</code>
<code> </code><code>#region 設定初始化參數</code>
<code> </code><code>dicInitParams = App.Current.Host.InitParams</code><code>as</code> <code>Dictionary<</code><code>string</code><code>,</code><code>string</code><code>>;</code>
<code> </code><code>if</code> <code>(dicInitParams !=</code><code>null</code> <code>&& dicInitParams.Count > 0)</code>
<code> </code><code>//标題</code>
<code> </code><code>if</code> <code>(dicInitParams.ContainsKey(</code><code>"Title"</code><code>))</code>
<code> </code><code>txtTitle.Text = dicInitParams[</code><code>"Title"</code><code>] ??</code><code>string</code><code>.Empty;</code>
<code> </code><code>else</code>
<code> </code><code>txtTitle.Visibility = Visibility.Collapsed;</code>
<code> </code><code>//設定開始日期</code>
<code> </code><code>if</code> <code>(dicInitParams.ContainsKey(</code><code>"StartDate"</code><code>))</code>
<code> </code><code>StartDate = Convert.ToDateTime(dicInitParams[</code><code>"StartDate"</code><code>]);</code>
<code> </code><code>//周涵蓋天數(僅當DateType=week時啟用)</code>
<code> </code><code>_weekDayCount = 7;</code>
<code> </code><code>//日期列背景色</code>
<code> </code><code>if</code> <code>(dicInitParams.ContainsKey(</code><code>"DayBackGroundColor"</code><code>))</code>
<code> </code><code>DayBackGroundColor = ReturnColorFromString(dicInitParams[</code><code>"DayBackGroundColor"</code><code>]);</code>
<code> </code><code>//日期類型</code>
<code> </code><code>if</code> <code>(dicInitParams.ContainsKey(</code><code>"DateType"</code><code>))</code>
<code> </code><code>DateType = dicInitParams[</code><code>"DateType"</code><code>];</code>
<code> </code><code>if</code> <code>(DateType ==</code><code>"week"</code><code>)</code>
<code> </code><code>{</code>
<code> </code><code>if</code> <code>(!dicInitParams.ContainsKey(</code><code>"DateColCount"</code><code>))</code>
<code> </code><code>{</code>
<code> </code><code>DateColCount = 10;</code>
<code> </code><code>}</code>
<code> </code><code>if</code> <code>(dicInitParams.ContainsKey(</code><code>"WeekDayCount"</code><code>))</code>
<code> </code><code>_weekDayCount = Convert.ToInt32(dicInitParams[</code><code>"WeekDayCount"</code><code>]);</code>
<code> </code><code>}</code>
<code> </code><code>else</code> <code>if</code> <code>(DateType ==</code><code>"month"</code><code>)</code>
<code> </code><code>DateColCount = 12;</code>
<code> </code><code>//日期列列數</code>
<code> </code><code>if</code> <code>(dicInitParams.ContainsKey(</code><code>"DateColCount"</code><code>))</code>
<code> </code><code>DateColCount = Convert.ToInt32(dicInitParams[</code><code>"DateColCount"</code><code>]);</code>
<code> </code><code>//文本列列頭</code>
<code> </code><code>if</code> <code>(dicInitParams.ContainsKey(</code><code>"PlanHeads"</code><code>))</code>
<code> </code><code>PlanHeads = HttpUtility.UrlDecode(dicInitParams[</code><code>"PlanHeads"</code><code>]).Split(</code><code>';'</code><code>);</code>
<code> </code><code>NameColumns = PlanHeads.Length;</code>
<code> </code><code>else</code>
<code> </code><code>MessageBox.Show(</code><code>"啟動參數未設定"</code><code>);</code>
<code>#endregion</code>
<code>using</code> <code>System;</code>
<code>using</code> <code>System.Collections.Generic;</code>
<code>namespace</code> <code>PlansView</code>
<code> </code><code>/// <summary></code>
<code> </code><code>/// 資料</code>
<code> </code><code>/// </summary></code>
<code> </code><code>public</code> <code>class</code> <code>PlansData</code>
<code> </code><code>public</code> <code>List<Plan> LstPlan {</code><code>get</code><code>;</code><code>set</code><code>; }</code>
<code> </code><code>/// 計劃時間集合</code>
<code> </code><code>public</code> <code>List<PlanDate> LstPlanDate {</code><code>get</code><code>;</code><code>set</code><code>; }</code>
<code> </code><code>/// 計劃</code>
<code> </code><code>public</code> <code>class</code> <code>Plan</code>
<code> </code><code>/// 計劃名稱</code>
<code> </code><code>public</code> <code>string</code> <code>PlanName {</code><code>get</code><code>;</code><code>set</code><code>; }</code>
<code> </code><code>/// 計劃日期</code>
<code> </code><code>public</code> <code>class</code> <code>PlanDate</code>
<code> </code><code>/// 說明</code>
<code> </code><code>public</code> <code>string</code> <code>Explain {</code><code>get</code><code>;</code><code>set</code><code>; }</code>
<code> </code><code>public</code> <code>DateTime? StartDate {</code><code>get</code><code>;</code><code>set</code><code>; }</code>
<code> </code><code>/// 結束時間</code>
<code> </code><code>public</code> <code>DateTime? EndDate {</code><code>get</code><code>;</code><code>set</code><code>; }</code>
<code> </code><code>/// 允許的最小值</code>
<code> </code><code>public</code> <code>DateTime? MinDate {</code><code>get</code><code>;</code><code>set</code><code>; }</code>
<code> </code><code>/// 允許的最大值</code>
<code> </code><code>public</code> <code>DateTime? MaxDate {</code><code>get</code><code>;</code><code>set</code><code>; }</code>
<code> </code><code>/// 是否隻讀</code>
<code> </code><code>public</code> <code>bool</code> <code>IsReadOnly {</code><code>get</code><code>;</code><code>set</code><code>; }</code>
<code> </code><code>/// 是否允許超過目前時間</code>
<code> </code><code>public</code> <code>bool</code> <code>CanGreaterThanNow {</code><code>get</code><code>;</code><code>set</code><code>; }</code>
<code> </code><code>/// 是否已編輯</code>
<code> </code><code>public</code> <code>bool</code> <code>HasEdit {</code><code>get</code><code>;</code><code>set</code><code>; }</code>
<code> </code><code>/// 是否已完成</code>
<code> </code><code>public</code> <code>bool</code> <code>IsFlish {</code><code>get</code><code>;</code><code>set</code><code>; }</code>
<code> </code><code>/// 是否允許撤銷</code>
<code> </code><code>public</code> <code>bool</code> <code>AllowCancel {</code><code>get</code><code>;</code><code>set</code><code>; }</code>
<code> </code><code>/// 是否允許為空(必填情況下,無法送出資料)</code>
<code> </code><code>public</code> <code>bool</code> <code>AllowBlank {</code><code>get</code><code>;</code><code>set</code><code>; }</code>
<code> </code><code>/// 自定義标記</code>
<code> </code><code>public</code> <code>string</code> <code>Tag {</code><code>get</code><code>;</code><code>set</code><code>; }</code>
下載下傳好該元件後, 引用Json.Silverlight(Silverlight的JSON元件用起來不友善)。這樣我們就可以很友善的将JSON字元串反序列化成對象 了,也可以将對象序列化成JSON字元串。于是,隻需要在InitParams傳入JSON字元串,然後反序列話即可。如下所示:
<code>#region 設定資料</code>
<code>private</code> <code>void</code> <code>LoadData()</code>
<code> </code><code>if</code> <code>(dicInitParams !=</code><code>null</code> <code>&& dicInitParams.ContainsKey(</code><code>"Data"</code><code>))</code>
<code> </code><code>LstPlansData = JsonConvert.DeserializeObject<List<PlansData>>(HttpUtility.UrlDecode(dicInitParams[</code><code>"Data"</code><code>]));</code>
那麼InitParams如何設定呢,測試頁(.aspx頁面)頁面元素如下:
<code><</code><code>form</code> <code>id</code><code>=</code><code>"form1"</code> <code>runat</code><code>=</code><code>"server"</code> <code>style</code><code>=</code><code>"height:100%"</code><code>></code>
<code><</code><code>div</code> <code>id</code><code>=</code><code>"silverlightControlHost"</code><code>></code>
<code> </code><code><</code><code>object</code> <code>data</code><code>=</code><code>"data:application/x-silverlight-2,"</code> <code>type</code><code>=</code><code>"application/x-silverlight-2"</code> <code>width</code><code>=</code><code>"100%"</code> <code>height</code><code>=</code><code>"100%"</code><code>></code>
<code> </code><code><</code><code>param</code> <code>name</code><code>=</code><code>"source"</code> <code>value</code><code>=</code><code>"ClientBin/PlansView.xap"</code><code>/></code>
<code> </code><code><</code><code>param</code> <code>name</code><code>=</code><code>"onError"</code> <code>value</code><code>=</code><code>"onSilverlightError"</code> <code>/></code>
<code> </code><code><</code><code>param</code> <code>name</code><code>=</code><code>"background"</code> <code>value</code><code>=</code><code>"white"</code> <code>/></code>
<code> </code><code><</code><code>param</code> <code>name</code><code>=</code><code>"minRuntimeVersion"</code> <code>value</code><code>=</code><code>"4.0.50826.0"</code> <code>/></code>
<code> </code><code><</code><code>param</code> <code>name</code><code>=</code><code>"autoUpgrade"</code> <code>value</code><code>=</code><code>"true"</code> <code>/></code>
<code> </code><code><</code><code>param</code> <code>name</code><code>=</code><code>"initParams"</code> <code>value='<%=InitParams %>' /></code>
<code> </code><code></</code><code>a</code><code>></code>
<code> </code><code></</code><code>object</code><code>><</code><code>iframe</code> <code>id</code><code>=</code><code>"_sl_historyFrame"</code> <code>style</code><code>=</code><code>"visibility:hidden;height:0px;width:0px;border:0px"</code><code>></</code><code>iframe</code><code>></</code><code>div</code><code>></code>
<code></</code><code>form</code><code>></code>
在後來代碼中,InitParams 如此定義:
<code>public</code> <code>string</code> <code>InitParams {</code><code>get</code><code>;</code><code>set</code><code>; }</code>
<code>protected</code> <code>void</code> <code>Page_Load(</code><code>object</code> <code>sender, EventArgs e)</code>
<code> </code><code>if</code> <code>(!IsPostBack)</code>
<code> </code><code>try</code>
<code> </code><code>InitParams =</code><code>"Title=施工計劃,DateColCount=80,PlanHeads=工程名稱,Data="</code><code>;</code>
<code> </code><code>List<PlansData> _lstPlansData =</code><code>new</code> <code>List<PlansData>();</code>
<code> </code><code>LoadData(_lstPlansData);</code>
<code> </code><code>InitParams += HttpUtility.UrlEncode(JsonConvert.SerializeObject(_lstPlansData, Formatting.Indented));</code>
<code> </code><code>//LogManager.WriteTraceLog(JsonConvert.SerializeObject(_lstPlansData, Formatting.Indented));</code>
<code> </code><code>catch</code> <code>(Exception ex)</code>
<code> </code><code>LogManager.WriteErrorLog(ex);</code>
<code>private</code> <code>static</code> <code>void</code> <code>LoadData(List<PlansData> _lstPlansData)</code>
<code> </code><code>PlansData _planData1 =</code><code>new</code> <code>PlansData()</code>
<code> </code><code>LstPlan =</code><code>new</code> <code>List<Plan>()</code>
<code> </code><code>new</code> <code>Plan(){PlanName=</code><code>"木工輕鋼割斷牆"</code><code>}</code>
<code> </code><code>LstPlanDate =</code><code>new</code> <code>List<PlanDate>()</code>
<code> </code><code>new</code> <code>PlanDate(){StartDate=DateTime.Now,EndDate=DateTime.Now.AddDays(3),Explain=</code><code>"基準時間"</code><code>,IsReadOnly=</code><code>true</code><code>},</code>
<code> </code><code>new</code> <code>PlanDate(){StartDate=DateTime.Now.AddDays(1),EndDate=DateTime.Now.AddDays(4),Explain=</code><code>"計劃時間"</code><code>,CanGreaterThanNow=</code><code>true</code><code>},</code>
<code> </code><code>new</code> <code>PlanDate(){StartDate=DateTime.Now.AddDays(2),EndDate=DateTime.Now.AddDays(5),Explain=</code><code>"實際時間"</code><code>,IsFlish=</code><code>true</code><code>,AllowBlank=</code><code>false</code><code>}</code>
<code> </code><code>_lstPlansData.Add(_planData1);</code>
<code> </code><code>PlansData _planData2 =</code><code>new</code> <code>PlansData()</code>
<code> </code><code>new</code> <code>Plan(){PlanName=</code><code>"貼文化石,刷漆"</code><code>}</code>
<code> </code><code>new</code> <code>PlanDate(){StartDate=DateTime.Now.AddDays(5),EndDate=DateTime.Now.AddDays(16),Explain=</code><code>"計劃時間"</code><code>,CanGreaterThanNow=</code><code>true</code><code>},</code>
<code> </code><code>new</code> <code>PlanDate(){StartDate=DateTime.Now.AddDays(4),EndDate=DateTime.Now.AddDays(15),Explain=</code><code>"實際時間"</code><code>}</code>
<code> </code><code>_lstPlansData.Add(_planData2);</code>
<code> </code><code>PlansData _planData3 =</code><code>new</code> <code>PlansData()</code>
<code> </code><code>new</code> <code>Plan(){PlanName=</code><code>"石膏闆吊棚"</code><code>}</code>
<code> </code><code>new</code> <code>PlanDate(){StartDate=DateTime.Now.AddDays(5),EndDate=DateTime.Now.AddDays(18),Explain=</code><code>"基準時間"</code><code>,IsReadOnly=</code><code>true</code><code>,CanGreaterThanNow=</code><code>true</code><code>},</code>
<code> </code><code>new</code> <code>PlanDate(){StartDate=DateTime.Now.AddDays(8),EndDate=DateTime.Now.AddDays(12),Explain=</code><code>"計劃時間"</code><code>},</code>
<code> </code><code>_lstPlansData.Add(_planData3);</code>
<code> </code><code>PlansData _planData4 =</code><code>new</code> <code>PlansData()</code>
<code> </code><code>new</code> <code>Plan(){PlanName=</code><code>"大白乳膠漆"</code><code>}</code>
<code> </code><code>new</code> <code>PlanDate(){StartDate=DateTime.Now.AddDays(15),EndDate=DateTime.Now.AddDays(18),Explain=</code><code>"基準時間"</code><code>,IsReadOnly=</code><code>true</code><code>},</code>
<code> </code><code>new</code> <code>PlanDate(){StartDate=DateTime.Now.AddDays(19),EndDate=DateTime.Now.AddDays(25),Explain=</code><code>"計劃時間"</code><code>},</code>
<code> </code><code>new</code> <code>PlanDate(){StartDate=DateTime.Now,EndDate=DateTime.Now.AddDays(5),Explain=</code><code>"實際時間"</code><code>}</code>
<code> </code><code>_lstPlansData.Add(_planData4);</code>
<code> </code><code>PlansData _planData5 =</code><code>new</code> <code>PlansData()</code>
<code> </code><code>new</code> <code>Plan(){PlanName=</code><code>"鋪地闆"</code><code>}</code>
<code> </code><code>new</code> <code>PlanDate(){StartDate=DateTime.Now.AddDays(3),EndDate=DateTime.Now.AddDays(5),Explain=</code><code>"基準時間"</code><code>},</code>
<code> </code><code>new</code> <code>PlanDate(){StartDate=DateTime.Now.AddDays(6),EndDate=DateTime.Now.AddDays(15),Explain=</code><code>"計劃時間"</code><code>},</code>
<code> </code><code>new</code> <code>PlanDate(){StartDate=DateTime.Now.AddDays(7),EndDate=DateTime.Now.AddDays(19),Explain=</code><code>"實際時間"</code><code>}</code>
<code> </code><code>_lstPlansData.Add(_planData5);</code>
<code> </code><code>PlansData _planData6 =</code><code>new</code> <code>PlansData()</code>
<code> </code><code>new</code> <code>Plan(){PlanName=</code><code>"測試1"</code><code>}</code>
<code> </code><code>new</code> <code>PlanDate(){StartDate=DateTime.Now,EndDate=DateTime.Now,Explain=</code><code>"基準時間"</code><code>},</code>
<code> </code><code>new</code> <code>PlanDate(){StartDate=DateTime.Now.AddDays(79),EndDate=DateTime.Now.AddDays(79),Explain=</code><code>"實際時間"</code><code>}</code>
<code> </code><code>_lstPlansData.Add(_planData6);</code>