| « Поставить закладку » « Сделать стартовой » | |||
|
|||
| Статьи:: .NET Framework :: Windows Forms :: Программная сортировка DataGrid
Программная сортировка DataGridОбычно, чтобы отсортировать DataGrid, мы вызываем метод DataView.Sort из DataView. Но что если наш DataGrid связан с заказными данными? В этом случае данный метод применить нельзя! Подготовка Как-то я писал приложение, в котором нужно было «запоминать» способ сортировки DataGrid. Мне нужно было сохранить сортировки в реестр и считывать их каждый раз, когда стартует приложение. Основы сортировки Если ваш DataGrid связан с некоторой коллекцией IList и вы хотите внедрить в проект поддержку сортировки вашего DataGrid, ваша коллекция должна реализовать интерфейс IBindingList. Этот интерфейс содержит среди своих методов метод ApplySort(). Когда пользователь щелкает по заголовку столбца, DataGrid вызывает метод ApplySort(). Метод ApplySort() принимает два параметра: property и direction. Каждый столбец вашего DataGrid представляет собой некоторое свойство выделенного объекта. И вы должны пропустить это свойство через метод ApplySort(). Эмуляция нажатия на заголовок столбца Я выяснил, что простой вызов ApplySort() не работает. Вызов protected-метода DataGrid'а OnMouseDown() с MouseEventArgs, указывающим на заголовок столбца так же не работает! Итак, Я использовал System.Reflection, чтобы заглянуть поглубже в класс DataGrid и посмотреть, что происходит, когда пользователь щелкает по заголовку. В списке private-членов DataGrid я нашел private-метод ColumnHeaderClicked(). Понятно что я имею ввиду? Бинго. Этот метод определен следующим образом: Итак, если мы хотим отсортировать столбец номер 5, нам надо определить лежащий в основе PropertyDescriptor для этого столбца и передать этот PropertyDescriptor методу ColumnHeaderClicked. Это можно реализовать двумя способами. Вызовом свойства GridColumnStyle.PropertyDescriptor столбца. Однако это свойство иногда возвращает null, если наш DataGrid связан с заказной коллекцией данных через MappingName. Если наш DataGrid связан с заказной коллекцией данных MyCollection, мы создадим TableStyle и несколько GridColumnStyles и свяжем их MappingName. MappingName из TableStyle будет тогда "MyCollection" и MappingName из ColumnStyle будет содержать имя некоторого свойства, которое показывает столбец. Итак, мы можем получить объект PropertyDescriptor, ища свойство с именем, равным MappingName столбца. Итак, код: public class MyDataGrid : DataGrid Вот и все. Автор: Terry Denham 6 Aug 2004. Перевод: MC707 30 Jan 2005 Рубрика: Windows Forms
Trac + Subversion @ Ubuntu: Revisited.
Задача: Установить на только что инсталлированный Ubuntu последнюю версию Trac, создать репозитории для нескольких проектов и настроить окружение соответственно. Структура проектов должна быть полностью корректной, установка максимально быстрой при минимальном количестве пакетов. Авторизация в репозитории и окружения Trac может быть общей, но позволяющей индивидуальную настройку для каждого проекта. Также, установка должна быть максимально независима от версий.
Подробнее... |
Рубрика: Ubuntu
| Добавлено: 30.08.2008
[g]Vim в режиме Python: Рекомпиляция в Windows.
Редактор Vim наиболее известен среди разработчиков в системах Unix — конкурент emacs, что-то вроде консольного IDE — этот редактор при должной сноровке и настройке (мне кажется, сноровке несколько меньшей и настройке более очевидной чем в emacs, но у последнего также есть мощная мультифункциональность — выбор за программистом) способен убыстрить и упростить многие процессы на этапах разработки не в ущерб таким удобствам как, например, авто-дополнение и навигация по проекту.
Подробнее... |
Рубрика: Статьи
| Добавлено: 30.08.2008
Java + JSON. Пути к дружбе.
Спешу поделиться результатами небольшого исследования, оказавшегося необходимым для текущего проекта. Рассматривается возможность связки Java и JSON, её преимущества и недостатки. Я расскажу о практической части, о теории больше поведают нижеприведённые ссылки (англ.).
Подробнее... |
Рубрика: Технология JAVA
| Добавлено: 30.08.2008
Остальные статьи:
Драйвер SQL Server 2005 для PHP
Типы данных в MySQL (сжатый справочник для PHP программиста)
PHP класс для работы с Яндекс.XML
Ошибки начинающих PHP разработчиков
Наследование шаблонов в Smarty
Особенности хранения сессий PHP в memcached
Internet Explorer 8 beta 2
9 правил для начинающего Ajax-разработчика
ExtJS 2.2 - полная поддержка Firefox 3, новые виджеты и другие нововведения
Windows 7: под покровом тайны
Apache mod_ndb - MySQL кластер с доступом через HTTP и Ajax
Поиск уязвимостей в программах с помощью анализаторов кода
Как появилась библиотека VivaCore
Это сложно
ASP.NET и немного поисковой оптимизации
Protocol buffers: библиотека обмена данными для C++, Java, Python от Google |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|