private void listView_ColumnClick(object sender, ColumnClickEventArgs e) { ListItemComparer.UpdateListComparer(sender as ListView, e.Column); }
//Initializes Theme Selector for multi-color theme protected void InitializeThemeSelector_Base() { string selectedTheme = ((BaseApplicationPage)(this.Page)).GetSelectedTheme(); if(string.IsNullOrEmpty(selectedTheme)) selectedTheme = this.Page.Theme; //Now sort themes according to their localized name. You may override this method and sorrt them differently System.Collections.Generic.List<ListItem> themeList = new System.Collections.Generic.List<ListItem>(); BaseClasses.Utils.ListItemComparer comparer = new ListItemComparer(true, ListItemComparer.SortBy.Text); foreach (ListItem li in this.ThemeSelector.Items) { //To use localized name create an entry in the language specific resource file for each Txt:Theme_Name //I.e. if your Theme's name is 'Fire Engine' your resource key should be "Txt:Fire_Engine" string locName = this.GetResourceValue("Txt:" + li.Text.Replace(" ","_"), "FPCEstimate"); if (!string.IsNullOrEmpty(locName)) li.Text = locName; themeList.Add(li); } this.ThemeSelector.Items.Clear(); themeList.Sort(comparer); this.ThemeSelector.Items.AddRange(themeList.ToArray()); if(!string.IsNullOrEmpty(selectedTheme)) { for (int index = 0; index <= this.ThemeSelector.Items.Count - 1; index++) { if (this.ThemeSelector.Items[index].Value == selectedTheme) { this.ThemeSelector.SelectedIndex = index; break; } } } }
private void SortListViewItems(int columnIndex) { if (columnIndex < 0 || columnIndex >= this.artifactListView.Columns.Count) return; ListItemComparer listItemComparer = new ListItemComparer((columnIndex == 0) ? true : false, this.sortListViewAscending); this.artifactListView.ListViewItemSorter = listItemComparer; if (this.artifactListView.SelectedItems.Count > 0) this.artifactListView.SelectedItems[0].EnsureVisible(); //Update the bitmap for the sorted column IntPtr headerWindow = NativeMethods.ListView_GetHeader(this.artifactListView.Handle); NativeMethods.HDITEM headerItem = new NativeMethods.HDITEM(); headerItem.mask = NativeMethods.HDI_FORMAT | NativeMethods.HDI_BITMAP; for (int i = 0; i < this.artifactListView.Columns.Count; i++) { if (NativeMethods.Header_GetItem(headerWindow, i, headerItem)) { headerItem.fmt &= ~(NativeMethods.HDF_BITMAP | NativeMethods.HDF_BITMAP_ON_RIGHT); headerItem.hbm = IntPtr.Zero; NativeMethods.Header_SetItem(headerWindow, i, headerItem); } } if (NativeMethods.Header_GetItem(headerWindow, columnIndex, headerItem)) { headerItem.mask = NativeMethods.HDI_FORMAT | NativeMethods.HDI_BITMAP; headerItem.fmt |= NativeMethods.HDF_BITMAP | NativeMethods.HDF_BITMAP_ON_RIGHT; headerItem.hbm = (this.sortListViewAscending) ? this.bitmapSortUp : this.bitmapSortDown; NativeMethods.Header_SetItem(headerWindow, columnIndex, headerItem); } }
private void SortListViewItems(int columnIndex) { if ((columnIndex >= 0) && (columnIndex < this.artifactListView.Columns.Count)) { ListItemComparer comparer = new ListItemComparer(columnIndex == 0, this.sortListViewAscending); this.artifactListView.ListViewItemSorter = comparer; if (this.artifactListView.SelectedItems.Count > 0) { this.artifactListView.SelectedItems[0].EnsureVisible(); } IntPtr hWndHeader = System.Workflow.Interop.NativeMethods.ListView_GetHeader(this.artifactListView.Handle); System.Workflow.Interop.NativeMethods.HDITEM hdi = new System.Workflow.Interop.NativeMethods.HDITEM { mask = 20 }; for (int i = 0; i < this.artifactListView.Columns.Count; i++) { if (System.Workflow.Interop.NativeMethods.Header_GetItem(hWndHeader, i, hdi)) { hdi.fmt &= -12289; hdi.hbm = IntPtr.Zero; System.Workflow.Interop.NativeMethods.Header_SetItem(hWndHeader, i, hdi); } } if (System.Workflow.Interop.NativeMethods.Header_GetItem(hWndHeader, columnIndex, hdi)) { hdi.mask = 20; hdi.fmt |= 0x3000; hdi.hbm = this.sortListViewAscending ? this.bitmapSortUp : this.bitmapSortDown; System.Workflow.Interop.NativeMethods.Header_SetItem(hWndHeader, columnIndex, hdi); } } }