2016-08-22 4 views
0

У меня есть сетка, где пользователь может выбирать записи через флажок перед каждой записью. Теперь у меня есть требование сортировать записи по их выбору, чтобы все выбранные записи были размещены сверху, а затем не выбранные.GWT (smartgwt) сетка сортировка выбранных записей верхняя

Есть ли какая-либо стандартная функция для достижения этого? В качестве альтернативы я думал о сохранении состояния выбора как атрибута на каждой записи и сортировке на основе атрибута.

Код для столбца:

gridRealmDt.setSelectionType(SelectionStyle.SIMPLE); 
gridRealmDt.setSelectionAppearance(SelectionAppearance.CHECKBOX); 

Я пытаюсь описать код, я использую, как пораженный код глубоко вложенный в наших собственных каркасных классах.
gridRealmDt является подклассом smartgwt ListGrid. В моем диалоговом окне создайте экземпляр сетки, который создает экземпляр базы данных, привязанной к базам данных. Когда диалоговое окно загружается, записи извлекаются из базы данных, после чего регистрируется dataArrivedHandler, где я выбираю записи, которые соответствуют записям из другой таблицы.

Я попытался поместить атрибут выбора в дополнительное поле и использовать его для сортировки перед другими критериями сортировки, но это не сработает. Вот код для используемого поля.

ListGridField txtSelected = new ListGridField(SELECTED, ""); 
txtSelected.setHidden(true); 
txtSelected.setSortByDisplayField(true); 
txtSelected.setCanSortClientOnly(true); 

Когда я не установить свойство canSortClientOnly заказа по отправляются моя база данных приводят к ошибке, так как таблица не содержит это поле, поэтому я установить свойство. Теперь я получаю следующую ошибку:

Удаление поля из сортировки Массив спецификатора, поскольку он определяет только клиент CanSort: true, и все данные еще не на стороне клиента.

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

record.setAttribute(CARealmDS.SELECTED,selected ? "a" : "b"); 

Я также не могу найти способ вызвать нормализатор при изменении выбора.

В настоящее время мы используем Smart GWT Version 6.0p.

+0

Просьба указать пример кода сетки и как вы создаете поле флажка. Кроме того, версия Smartgwt полезна, чтобы узнать, к какому из них вы имеете доступ. – carlossierra

ответ

0

Я не думаю, что есть какая-либо стандартная функция. Просто используйте обновление сетевого хранилища. Сначала поставьте отмеченные предметы.

+0

Можете ли вы дать мне образцы вызовов для указанных функций? благодаря – Martin