Silverlight——施工计划日报表(一)
生活随笔
收集整理的這篇文章主要介紹了
Silverlight——施工计划日报表(一)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
前一段時間,客戶需要一個施工計劃報表,要求能夠直觀的看到各個計劃的實施時間,而且能夠修改。琢磨著,決定用Silverlight搞定好了。效果如下:
用戶可以通過右鍵菜單的【完成】選項來標記完成,左鍵選擇單元格來設(shè)置時間段。那么數(shù)據(jù)是怎么帶過來的呢?在這個Silverlight程序里面,定義了這么一個類:
namespace PlansView {/// <summary>/// 數(shù)據(jù)/// </summary>public class PlansData{public List<Plan> LstPlan { get; set; }/// <summary>/// 計劃時間集合/// </summary>public List<PlanDate> LstPlanDate { get; set; }}/// <summary>/// 計劃/// </summary>public class Plan{/// <summary>/// 計劃名稱/// </summary>public string PlanName { get; set; }}/// <summary>/// 計劃日期/// </summary>public class PlanDate{/// <summary>/// 說明/// </summary>public string Explain { get; set; }/// <summary>/// 開始時間/// </summary>public DateTime? StartDate { get; set; }/// <summary>/// 結(jié)束時間/// </summary>public DateTime? EndDate { get; set; }/// <summary>/// 允許的最小值/// </summary>public DateTime? MinDate { get; set; }/// <summary>/// 允許的最大值/// </summary>public DateTime? MaxDate { get; set; }/// <summary>/// 是否只讀/// </summary>public bool IsReadOnly { get; set; }/// <summary>/// 是否允許超過當前時間/// </summary>public bool CanGreaterThanNow { get; set; }/// <summary>/// 是否已編輯/// </summary>public bool HasEdit { get; set; }/// <summary>/// 是否已完成/// </summary>public bool IsFlish { get; set; }/// <summary>/// 是否允許撤銷/// </summary>public bool AllowCancel { get; set; }/// <summary>/// 是否允許為空(必填情況下,無法提交數(shù)據(jù))/// </summary>public bool AllowBlank { get; set; }/// <summary>/// 自定義標記/// </summary>public string Tag { get; set; }} }??? 這個類,對每一小行(就是時間行)都做了精細的控制。比如是否只讀,是否已編輯,是否允許為空(不選),是否允許撤銷(當標記為完成時),允許標記的最大值、最小值以及是否允許結(jié)束時間超過當天。當然,這個類主要是對數(shù)據(jù)行的控制,整個報表還有些全局的控制。比如日期格式(day、week、month)(這點還需要完善),開始時間,日期列數(shù),文本列列數(shù),計劃列頭,日期列背景色等等。也就是這個計劃自定義性是很強的,完全可以根據(jù)數(shù)據(jù)的需要來顯示。
???? 比如剛才這個測試的數(shù)據(jù)如下:
public string InitParams { get; set; }protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){try{InitParams = "Title=施工計劃,DateColCount=80,PlanHeads=工程名稱,Data=";List<PlansData> _lstPlansData = new List<PlansData>();LoadData(_lstPlansData);InitParams += HttpUtility.UrlEncode(JsonConvert.SerializeObject(_lstPlansData, Formatting.Indented));//LogManager.WriteTraceLog(JsonConvert.SerializeObject(_lstPlansData, Formatting.Indented));}catch (Exception ex){LogManager.WriteErrorLog(ex);}}} private static void LoadData(List<PlansData> _lstPlansData){PlansData _planData1 = new PlansData(){LstPlan = new List<Plan>(){new Plan(){PlanName="木工輕鋼割斷墻"}},LstPlanDate = new List<PlanDate>(){new PlanDate(){StartDate=DateTime.Now,EndDate=DateTime.Now.AddDays(3),Explain="基準時間",IsReadOnly=true},new PlanDate(){StartDate=DateTime.Now.AddDays(1),EndDate=DateTime.Now.AddDays(4),Explain="計劃時間",CanGreaterThanNow=true},new PlanDate(){StartDate=DateTime.Now.AddDays(2),EndDate=DateTime.Now.AddDays(5),Explain="實際時間",IsFlish=true,AllowBlank=false}}};_lstPlansData.Add(_planData1);PlansData _planData2 = new PlansData(){LstPlan = new List<Plan>(){new Plan(){PlanName="貼文化石,刷漆"}},LstPlanDate = new List<PlanDate>(){new PlanDate(){StartDate=DateTime.Now.AddDays(5),EndDate=DateTime.Now.AddDays(16),Explain="計劃時間",CanGreaterThanNow=true},new PlanDate(){StartDate=DateTime.Now.AddDays(4),EndDate=DateTime.Now.AddDays(15),Explain="實際時間"}}};_lstPlansData.Add(_planData2);PlansData _planData3 = new PlansData(){LstPlan = new List<Plan>(){new Plan(){PlanName="石膏板吊棚"}},LstPlanDate = new List<PlanDate>(){new PlanDate(){StartDate=DateTime.Now.AddDays(5),EndDate=DateTime.Now.AddDays(18),Explain="基準時間",IsReadOnly=true,CanGreaterThanNow=true},new PlanDate(){StartDate=DateTime.Now.AddDays(8),EndDate=DateTime.Now.AddDays(12),Explain="計劃時間"},}};_lstPlansData.Add(_planData3);PlansData _planData4 = new PlansData(){LstPlan = new List<Plan>(){new Plan(){PlanName="大白乳膠漆"}},LstPlanDate = new List<PlanDate>(){new PlanDate(){StartDate=DateTime.Now.AddDays(15),EndDate=DateTime.Now.AddDays(18),Explain="基準時間",IsReadOnly=true},new PlanDate(){StartDate=DateTime.Now.AddDays(19),EndDate=DateTime.Now.AddDays(25),Explain="計劃時間"},new PlanDate(){StartDate=DateTime.Now,EndDate=DateTime.Now.AddDays(5),Explain="實際時間"}}};_lstPlansData.Add(_planData4);PlansData _planData5 = new PlansData(){LstPlan = new List<Plan>(){new Plan(){PlanName="鋪地板"}},LstPlanDate = new List<PlanDate>(){new PlanDate(){StartDate=DateTime.Now.AddDays(3),EndDate=DateTime.Now.AddDays(5),Explain="基準時間"},new PlanDate(){StartDate=DateTime.Now.AddDays(6),EndDate=DateTime.Now.AddDays(15),Explain="計劃時間"},new PlanDate(){StartDate=DateTime.Now.AddDays(7),EndDate=DateTime.Now.AddDays(19),Explain="實際時間"}}};_lstPlansData.Add(_planData5);PlansData _planData6 = new PlansData(){LstPlan = new List<Plan>(){new Plan(){PlanName="測試1"}},LstPlanDate = new List<PlanDate>(){new PlanDate(){StartDate=DateTime.Now,EndDate=DateTime.Now,Explain="基準時間"},new PlanDate(){StartDate=DateTime.Now.AddDays(6),EndDate=DateTime.Now.AddDays(15),Explain="計劃時間"},new PlanDate(){StartDate=DateTime.Now.AddDays(79),EndDate=DateTime.Now.AddDays(79),Explain="實際時間"}}};_lstPlansData.Add(_planData6);} Silverlight——施工計劃日報表(二)總結(jié)
以上是生活随笔為你收集整理的Silverlight——施工计划日报表(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用APPium获取自动浏览获取喵币
- 下一篇: VTK:绘制圆锥体(附完整源码)