/// <summary> /// Process user-initiated sort operation /// </summary> /// <history> /// [msellers] 5/17/2007 Added /// </history> protected void grdDocuments_Sorting(object sender, GridViewSortEventArgs e) { var objCustomSortList = new ArrayList(); var objCustomSortColumn = new DocumentsSortColumnInfo(); var objCustomSortDirecton = Models.SortDirection.Ascending; var strSortDirectionString = "ASC"; // Set the sort column name objCustomSortColumn.ColumnName = e.SortExpression; // Determine if we need to reverse the sort. This is needed if an existing sort on the same column existed that was desc if (ViewState ["CurrentSortOrder"] != null && ViewState ["CurrentSortOrder"].ToString() != string.Empty) { var existingSort = ViewState ["CurrentSortOrder"].ToString(); if (existingSort.StartsWith(e.SortExpression, StringComparison.InvariantCulture) && existingSort.EndsWith("ASC", StringComparison.InvariantCulture)) { objCustomSortDirecton = Models.SortDirection.Descending; strSortDirectionString = "DESC"; } } // Set the sort objCustomSortColumn.Direction = objCustomSortDirecton; objCustomSortList.Add(objCustomSortColumn); var docComparer = new DocumentViewModelComparer(objCustomSortList); Documents.Sort(docComparer.Compare); grdDocuments.DataSource = Documents; grdDocuments.DataBind(); // Save the sort to viewstate ViewState ["CurrentSortOrder"] = e.SortExpression + " " + strSortDirectionString; }
ArrayList RetrieveSortColumnSettings() { // custom viewstate implementation to avoid reflection var objSortColumnSettings = new ArrayList(); DocumentsSortColumnInfo objSortColumnInfo = null; string strValues = null; strValues = Convert.ToString(ViewState [VIEWSTATE_SORTCOLUMNSETTINGS]); if (!string.IsNullOrEmpty(strValues)) { foreach (string strSortColumnSetting in strValues.Split('#')) { objSortColumnInfo = new DocumentsSortColumnInfo(); objSortColumnInfo.ColumnName = strSortColumnSetting.Split(',') [0]; objSortColumnInfo.LocalizedColumnName = strSortColumnSetting.Split(',') [1]; objSortColumnInfo.Direction = (DocumentsSortColumnInfo.SortDirection)Enum.Parse( typeof(DocumentsSortColumnInfo.SortDirection), strSortColumnSetting.Split(',') [2]); objSortColumnSettings.Add(objSortColumnInfo); } } return(objSortColumnSettings); }
void SaveSortColumnSettings(ArrayList objSettings) { // custom viewstate implementation to avoid reflection DocumentsSortColumnInfo objSortColumnInfo = null; string strValues = ""; foreach (DocumentsSortColumnInfo objSortColumnInfo_loopVariable in objSettings) { objSortColumnInfo = objSortColumnInfo_loopVariable; if (strValues != string.Empty) { strValues = strValues + "#"; } strValues = strValues + objSortColumnInfo.ColumnName + "," + objSortColumnInfo.LocalizedColumnName + "," + objSortColumnInfo.Direction.ToString(); } ViewState [VIEWSTATE_SORTCOLUMNSETTINGS] = strValues; }
protected void grdSortColumns_DeleteCommand(object source, DataGridCommandEventArgs e) { var objSortColumns = default(ArrayList); var objSortColumnToDelete = new DocumentsSortColumnInfo(); objSortColumns = RetrieveSortColumnSettings(); foreach (DocumentsSortColumnInfo objSortColumnToDelete_loopVariable in objSortColumns) { objSortColumnToDelete = objSortColumnToDelete_loopVariable; if (objSortColumnToDelete.ColumnName == grdSortColumns.DataKeys [e.Item.ItemIndex].ToString()) { objSortColumns.Remove(objSortColumnToDelete); break; } } BindSortSettings(objSortColumns); }
protected void lnkAddSortColumn_Click(object sender, EventArgs e) { var objSortColumns = default(ArrayList); var objNewSortColumn = new DocumentsSortColumnInfo(); objSortColumns = RetrieveSortColumnSettings(); objNewSortColumn.ColumnName = comboSortFields.SelectedValue; if (comboSortOrderDirection.SelectedValue == "ASC") { objNewSortColumn.Direction = Models.SortDirection.Ascending; } else { objNewSortColumn.Direction = Models.SortDirection.Descending; } objSortColumns.Add(objNewSortColumn); BindSortSettings(objSortColumns); }
/// ----------------------------------------------------------------------------- /// <summary> /// Read settings from the screen into the passed-in DocumentsSettings object /// </summary> /// <remarks> /// </remarks> /// <history> /// </history> /// ----------------------------------------------------------------------------- void FillSettings() { string strDisplayColumns = ""; DocumentsDisplayColumnInfo objColumnInfo = null; int intIndex = 0; var objSortColumns = default(ArrayList); string strSortColumnList = ""; DocumentsSortColumnInfo objSortColumn = null; // ensure that if categories list is checked that we did have an available category if ((chkUseCategoriesList.Checked && !lstNoListsAvailable.Visible)) { // if so, set normally Settings.UseCategoriesList = chkUseCategoriesList.Checked; Settings.CategoriesListName = cboCategoriesList.SelectedValue; } else { // otherwise default values Settings.UseCategoriesList = false; Settings.CategoriesListName = ""; } Settings.ShowTitleLink = chkShowTitleLink.Checked; Settings.AllowUserSort = chkAllowUserSort.Checked; Settings.GridStyle = comboGridStyle.SelectedItem.Value; try { DateTime.Now.ToString(textDateTimeFormat.Text); Settings.DateTimeFormat = textDateTimeFormat.Text; } catch (Exception ex) { Exceptions.LogException(ex); Settings.DateTimeFormat = null; } if (folderDefaultFolder.SelectedFolder != null) { Settings.DefaultFolder = folderDefaultFolder.SelectedFolder.FolderID; } else { Settings.DefaultFolder = null; } var objColumnSettings = RetrieveDisplayColumnSettings(); intIndex = 0; foreach (DocumentsDisplayColumnInfo objColumnInfo_loopVariable in objColumnSettings) { objColumnInfo = objColumnInfo_loopVariable; // Figure out column visibility objColumnInfo.Visible = ((CheckBox)grdDisplayColumns.Items [intIndex].Cells [1].FindControl("chkVisible")).Checked; if (strDisplayColumns != string.Empty) { strDisplayColumns = strDisplayColumns + ","; } strDisplayColumns = strDisplayColumns + objColumnInfo.ColumnName + ";" + objColumnInfo.Visible.ToString(); intIndex = intIndex + 1; } Settings.DisplayColumns = strDisplayColumns; objSortColumns = RetrieveSortColumnSettings(); foreach (DocumentsSortColumnInfo objSortColumn_loopVariable in objSortColumns) { objSortColumn = objSortColumn_loopVariable; if (strSortColumnList != string.Empty) { strSortColumnList = strSortColumnList + ","; } strSortColumnList = strSortColumnList + (objSortColumn.Direction == DocumentsSortColumnInfo.SortDirection.Descending ? "-" : "") + objSortColumn.ColumnName; } Settings.SortOrder = strSortColumnList; Settings.GridStyle = comboGridStyle.SelectedValue; }