private void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { RequirementsProcessor rp = new RequirementsProcessor(GetType()); rp.ProcessRequirements(); //Page.Response.AddHeader("Refresh","300"); if (rp.ContestIDDefined) { selcon.ContestID = rp.ContestID; Contest con = Contest.GetContest(rp.ContestID); if (con.Time == ContestTime.Forthcoming) { throw new NeJudgeException("Нельзя просмотреть монитор будущего соревнования"); } DateTime cur_time = TimeUtils.ZeroDateTime(DateTime.Now); DateTime t_begin = TimeUtils.ZeroDateTime(con.Beginning); DateTime t_end = TimeUtils.ZeroDateTime(con.Ending); // Последнее обновление TimeSpan dur = TimeUtils.ZeroTimeSpan(t_end - t_begin); TimeSpan elapsed = TimeUtils.ZeroTimeSpan((cur_time - t_begin < dur) ? cur_time - t_begin : dur); TimeSpan estimated = TimeUtils.ZeroTimeSpan(dur - elapsed); if (elapsed >= dur) { st_label.InnerHtml += "<span style='color:red;font-size:small;display:block;'>(Соревнование окончено)</span>"; } refresh.Text = TimeUtils.BeautifyTimeSpan(elapsed, false); // Продолжительность соревнования period.Text = TimeUtils.BeautifyTimeSpan(dur, false); left.Text = TimeUtils.BeautifyTimeSpan(estimated, false); ContestTypeHandler h = Factory.GetHandlerInstance(con.Type); DataTable[] dts = h.MonitorManager.Build(con.ID); for (int i = 0; i < dts.Length; i++) { DataTable dt = dts[i]; monitorPH.Controls.Add(new LiteralControl(dt.TableName)); DataGrid gv = new DataGrid(); gv.Width = new Unit(100.0, UnitType.Percentage); gv.CellPadding = 5; gv.HeaderStyle.CssClass = "gridHeader"; gv.DataSource = dt; gv.DataBind(); h.MonitorManager.PaintDataGrid(gv, i, dt.Columns.Count - 3); monitorPH.Controls.Add(gv); if (i != dts.Length - 1) { monitorPH.Controls.Add(new LiteralControl("<br />")); } } } else { info.Visible = false; } } }
protected void Page_Load(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.Columns.Add("ID"); dt.Columns.Add("Name"); dt.Columns.Add("Monitor"); dt.Columns.Add("Beginning", typeof(DateTime)); dt.Columns.Add("Ending", typeof(DateTime)); dt.Columns.Add("Status"); Contest[] cons = Contest.GetContests(ContestTime.Current | ContestTime.Forthcoming | ContestTime.Past); foreach (Contest cnt in cons) { DataRow dr = dt.NewRow(); dr[0] = cnt.ID; if (cnt.Time == ContestTime.Forthcoming && !Page.User.IsInRole("Administrator")) { dr[1] = cnt.Name; } else { dr[1] = UrlRenderer.RenderContestUrl(cnt); } if (cnt.Time == ContestTime.Forthcoming && !Page.User.IsInRole("Judge")) { dr[2] = "Недоступен"; } else { dr[2] = UrlRenderer.RenderMonitorUrl(cnt); } dr[3] = cnt.Beginning; dr[4] = cnt.Ending; switch (cnt.Time) { case ContestTime.Current: dr[5] = String.Format("Идет (конец через {0})", TimeUtils.BeautifyTimeSpan(cnt.Ending - DateTime.Now, false)); break; case ContestTime.Forthcoming: dr[5] = String.Format("Еще не начиналось (начало через {0})", TimeUtils.BeautifyTimeSpan(cnt.Beginning - DateTime.Now, false)); break; case ContestTime.Past: dr[5] = "Закончилось"; break; } dt.Rows.Add(dr); } contestsGV.DataSource = dt; contestsGV.DataBind(); }