Как изменить значки сортировки столбцов для jqgrid?

Мне нужно изменить значки сортировки по умолчанию для jqgrid . В настоящее время для каждого столбца отображаются стрелки вверх и вниз. Как я могу заменить его одним значком, который меняется при нажатии?

По сути, значок должен переключаться между возрастанием, убыванием и несортировкой.


Решение

Используя ответ Олега, я изменил стандартные значки с двумя стрелками по умолчанию. быть одной красной стрелкой вверх или вниз, которая переключается при сортировке.

jqGrid заключен в div с классом searchResults .

Это делает значки заголовков красными:

.searchResults .ui-state-default .ui-grid-ico-sort.ui-icon
{
    background-image: url("../images/ui-icons_cd0a0a_256x240.png");
}

Это центрирует значки, когда отображается только один значок, а другой скрыт:

.searchResults .ui-jqgrid .ui-icon-asc, .searchResults .ui-jqgrid .ui-icon-desc 
{
    height:12px;
    margin-top:0px;
}

Это скрывает значок неактивной сортировки: Есть какой-либо способ сделать это. Пожалуйста, поделитесь своими ценными предложениями. ...

В моем приложении для Android я бы хотел использовать время, которое не исходит от устройства, а стандартное время, которое пользователь не может изменить. скажем, мое приложение PeopleEditor. Это сделано для загрузки и редактирования объектов People, которые являются сложными. Когда вы загружаете приложение, вы получаете домашний экран, который загружает группу людей в память - скажем, все они доступны через коллекцию, к которой я могу обратиться из своего контейнера. Нажав на персонажа, вы попадете на экран редактора. Редактор сложен, так что это не тривиальное представление основной детали, реализованное на одном экране.

Итак, на главном экране, когда я щелкаю человека, приложение должно создать новый вид, модель представления и показать вид , Если я сначала создаю модель представления через контейнер или нет, я могу инициализировать его с соответствующим объектом person. Это кажется мне очень естественным, поэтому мне трудно понять, почему представление «вид сначала» кажется преобладающим. Как бы я это сделал, используя подход «вид сначала»? Представление создаст модель представления, которая может попасть в коллекцию людей, но не знает, какой человек ее редактирует. РЕДАКТИРУЙТЕ для ясности: одновременно могут существовать несколько редакторов People, каждый из которых редактирует отдельного человека.

Ссылочная реализация MVVM в Prism 4.0 alpha использует «обработчик состояний», который в основном представляет собой сервис, который приложение использует для хранения параметра конструктора. в контейнере. Он сохраняет состояние и вызывает ShowView, а созданная в конечном итоге модель представления импортирует объект состояния. Это кажется мне неуклюжим - как будто он пытается притвориться, что он слабо связан, когда на самом деле это не так. У кого-нибудь еще есть другие указания?

10
задан nlawalker 1 September 2010 в 06:30
поделиться

1 ответ

nlawalker,

Я не эксперт, но то, что я узнаю о View-First и Model- Во-первых, это:

  1. View-First: Просмотр программ ViewModel. Вы создаете представление, а затем автоматически создается представление.
  2. Model-First: Представление программ ViewModel. Вы создаете граф объекта ViewModel в корневом приложении, назначаете его контексту данных корневого представления. затем позволяет представлению отображать связанный с ним дочерний элемент в зависимости от модели представления.

Не хочу сказать, что подход Model-Firs плох, но я предпочитаю подход View-First, потому что модель представления может находиться в коде позади, поэтому, когда какой-либо процесс требует необязательной дружественной задачи (PasswordBox, DialogConfirmation, ClosingForm и т. д.), я могу написать свою логику в коде позади.

В любом случае, для решения этого случая я обычно использовал комбинацию IOC и агрегатора событий. Вот оно:

  1. Для модели представления требуется контекстная информация, регистрирующая ее экземпляр в контейнере IOC либо ее тип. Так что алиас готов даже его взгляд не.
  2. Когда происходит действие навигации (нажатие на элемент списка людей), разрешите представление с помощью преобразователя контейнера IOC. и отправить событие на навигационную шину с указанным параметром. Дальше это событие будет ловить целевую ViewModel и что-то делать.

Регистрация экземпляра модели представления на самом деле не требуется. это только для того, чтобы убедиться, что модель представления готова, когда событие отправляется предыдущей моделью представления.

ОБНОВЛЕНИЕ

, но затем, чтобы заполнить его любым локальным контекстом, мне нужно использовать глобальное средство для отправки ему события?

В вашем случае контекстный объект не является локальным, это скорее сообщение, передаваемое между вызовами объекта. Очевидно, что в вашем подходе, основанном на модели, вы делаете:

//selectedPeople is contextual object
myPeopleDetailVM.LoadData(selectedPeople)

это будет почти то же самое, когда вы передаете selectedPeople в аргумент шины событий.

Если вы рассматриваете производительность, вы можете сравнить ее с системой маршрутизируемых событий WPF, в этом случае стратегия маршрутизации более сложна, чем шина событий, и я думаю, что если вы достаточно уверены в использовании маршрутизируемого события WPF, вам не следует с агрегатором событий.

Единственная проблема, которую я вижу, если вы используете встроенный агрегатор событий фреймворка (prism, mvvmlight), ваша модель представления загрязнена шиной событий, если вы жалуетесь на это, то я с вами согласен.

Надеюсь на помощь.

3
ответ дан 4 December 2019 в 04:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: