protected void Page_Load(object sender, EventArgs e) { if (String.IsNullOrEmpty(this.User)) { User = Page.User.Identity.Name; } if (ViewState[szKeyMiniMode] != null) { MiniMode = (Boolean)ViewState[szKeyMiniMode]; } if (ViewState[szKeyAllowsPaging] != null) { AllowPaging = Convert.ToBoolean(ViewState[szKeyAllowsPaging], CultureInfo.InvariantCulture); } // need to do bind to the data every time or else the comments and images (dynamically added) disappear. // We also don't want to overuse viewstate - can get quite big quite quickly. // So we cache the logbook in the Session and use it on postbacks. // always hit the DB on a GET unless host page has already called RefreshData (in which case we have already hit the DB) if (!IsPostBack) { lblAddress.Text = Pilot.Address; pnlAddress.Visible = Pilot.Address.Trim().Length > 0; if (!CacheFlushed) { FlushCache(); } // Customer-facing utility function: if you add "dupesOnly=1" to the URL, we add a custom restriction that limits flights to ONLY flights that look like potential duplicates if (util.GetIntParam(Request, "dupesOnly", 0) != 0) { Restriction.EnumeratedFlights = LogbookEntry.DupeCandidatesForUser(Restriction.UserName); FlushCache(); HasBeenBound = false; } ckCompactView.Checked = m_isCompact; ckIncludeImages.Checked = m_showImagesInline; rblShowInPages.Checked = gvFlightLogs.AllowPaging; rblShowAll.Checked = !rblShowInPages.Checked; ckSelectFlights.Visible = IsViewingOwnFlights; decPageSize.IntValue = gvFlightLogs.PageSize; decPageSize.EditBox.MaxLength = 2; // Refresh state from params. // fq is handled at the host level. string szLastSort = util.GetStringParam(Request, "so"); if (!String.IsNullOrEmpty(szLastSort) && Enum.TryParse <SortDirection>(szLastSort, true, out SortDirection sortDirection)) { LastSortDir = sortDirection; } string szSortExpr = util.GetStringParam(Request, "se"); if (!String.IsNullOrEmpty(szSortExpr)) { LastSortExpr = szSortExpr; } gvFlightLogs.PageIndex = util.GetIntParam(Request, "pg", gvFlightLogs.PageIndex); if (!String.IsNullOrEmpty(LastSortExpr) || gvFlightLogs.PageIndex > 0) { SortGridview(gvFlightLogs, Data as List <LogbookEntryDisplay>); } } if (!HasBeenBound && !String.IsNullOrEmpty(User)) { BindData(Data); } gvFlightLogs.Columns[FindColumn(gvFlightLogs, Resources.LogbookEntry.FieldCFI)].Visible = Pilot.IsInstructor && !MiniMode; gvFlightLogs.Columns[FindColumn(gvFlightLogs, Resources.LogbookEntry.FieldSIC)].Visible = Pilot.TracksSecondInCommandTime && !MiniMode; }