powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Сортировка в гриде extjs
18 сообщений из 18, страница 1 из 1
Сортировка в гриде extjs
    #35285087
danilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использую грид из библиотеки extjs2. Не устраивает сортировка.
Сортирует так: cat10, cat101, cat11
А надо так: cat10, cat11, cat101

Кто нибудь сталкивался с такой проблемой в extjs2? Как исправить?
...
Рейтинг: 0 / 0
Сортировка в гриде extjs
    #35285158
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не пользую ExtJS, но думаю что это не ее проблема, а нормальное явление. cat10, cat101, cat11 - это строки, и js сортирует их естественно как строки. А вы хотите их отсортировать как числа. Решить проблему можно конечно, но библиотека тут нимало не поможет, если вы в нее не допишете новый метод (сортировать сначала по строковым префиксам, а потом внутри групп - по численным окончаниям).

P.S. хотя есть тут у нас один ярый фанат библиотек, может он хитрый метод в ExtJS знает. Ждем с нетерпением.
...
Рейтинг: 0 / 0
Сортировка в гриде extjs
    #35285714
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сортировать по чему-то типа:
Код: plaintext
cat<span style="display:none"> 0000101 </span> 101 
...
Рейтинг: 0 / 0
Сортировка в гриде extjs
    #35286664
ZeusTheTrueGod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вариант 1 - использовать сортировку на сервере
что это даёт - сортируй как тебе угодно
вариант 2 - хранить в данных числа, а в гриде выводить 'cat' + число
пример - файл из экзамлов EXTJS\examples\grid\array-grid.js
там вот есть такое
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
 // example of custom renderer function
    function pctChange(val){
        if(val >  0 ){
            return '<span style="color:green;">' + val + '%</span>';
        }else if(val <  0 ){
            return '<span style="color:red;">' + val + '%</span>';
        }
        return val;
    }

меняете на
Код: plaintext
1.
2.
3.
function myRenderer(val){
return '<span style="color:red;"> cat' + val + '%</span>';
}

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
// create the Grid
    var grid = new Ext.grid.GridPanel({
        store: store,
        columns: [
            {id:'company',header: "Company", width:  160 , sortable: true, dataIndex: 'company',renderer:myRenderer}
            ],
        stripeRows: true,
        autoExpandColumn: 'company',
        height: 350 ,
        width: 600 ,
        title:'Array Grid'
    });

то есть для столбца 'company' мы указываем свой реднерер каждой ячейки
...
Рейтинг: 0 / 0
Сортировка в гриде extjs
    #35287075
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зевс! Твоё - не работает, а моё - таки да.
...
Рейтинг: 0 / 0
Сортировка в гриде extjs
    #35290295
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот работающий примерчик - скопипастить и запустить в браузере:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
<html>
<head>
<link rel="stylesheet" type="text/css" href="http://extjs.com/deploy/dev/examples/grid/../../resources/css/ext-all.css" />
<script type="text/javascript" src="http://extjs.com/deploy/dev/examples/grid/../../adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="http://extjs.com/deploy/dev/examples/grid/../../ext-all.js"></script>
<script type="text/javascript">
Ext.onReady(function(){
    var myData = [
        ['cat<span style="display:none">0000010</span>10'],
        ['cat<span style="display:none">0000011</span>11'],
        ['cat<span style="display:none">0000101</span>101'],
        ['cat<span style="display:none">0000110</span>110']
    ];
    var store = new Ext.data.SimpleStore({
        fields: [
           {name: 'cats'}
        ]
    });
    store.loadData(myData);
    var grid = new Ext.grid.GridPanel({
        store: store,
        columns: [
            {id:'cats',header: "Всякие коты", width:  160 , sortable: true, dataIndex: 'cats'}
        ],
        stripeRows: true,
        autoExpandColumn: 'cats',
        height: 350 ,
        width: 600 ,
        title:'Табличка про котов'
    });

    grid.render('grid-example');

    grid.getSelectionModel().selectFirstRow();
});
</script>
<body>
<div id="grid-example"></div>
</body>
</html>

...
Рейтинг: 0 / 0
Сортировка в гриде extjs
    #35290793
ZeusTheTrueGod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну круто конечно, только смешиваются данные и представления
хотя в джаваскрипте главное - чтоб работало
...
Рейтинг: 0 / 0
Сортировка в гриде extjs
    #35290918
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZeusTheTrueGod...смешиваются данные и представления...
Это как раз и есть вариант представления данных. Причём, вышеуказанная метода ничего общего с конкретной библиотекой не имеет, она - универсальна. Этот же приёмчик я с успехом использую в т.ч. и в стандартном гридвью в аспнет. Например, сотрировка по дате:
Код: plaintext
1.
<span style='display:none'>ГГГГММДД</span>ДД.ММ.ГГГГ
...
Рейтинг: 0 / 0
Сортировка в гриде extjs
    #35291173
ZeusTheTrueGod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я сразу не заметил и не разобрался, в чём смысл этого спана, думал, что для выделения цветом
дейстивтельно, хороший хак, будет возможность , начну им пользоваться, идея просто замечательная
...
Рейтинг: 0 / 0
Сортировка в гриде extjs
    #35291185
Фотография Грасов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZeusTheTrueGodя сразу не заметил и не разобрался, в чём смысл этого спана, думал, что для выделения цветом
дейстивтельно, хороший хак, будет возможность , начну им пользоваться, идея просто замечательнаяпросто счас в extjs сортировка захардкодена
и "подсунуть" свою функцию сортировки без изменения базовых
классов - никак. и такой вот хак как раз самый оптимальный.
тока что еще лучше сократить скрываемый текст

<span style="display:none">..</span>

до

<i class="_s_">...</i> (например)
...
Рейтинг: 0 / 0
Сортировка в гриде extjs
    #35292564
ZeusTheTrueGod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну насчёт подсунуть своё никак - это неправда, я там весьма много своего подсовываю, не меняя исходный текст библиотеки


допустим, есть у тебя грид.

можно писать

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
grid.store.sortData = function(f, direction){
        direction = direction || 'ASC';
        var st = this.fields.get(f).sortType;
        var fn = function(r1, r2){
            var v1 = st(r1.data[f]), v2 = st(r2.data[f]);
            return v1 > v2 ?  1  : (v1 < v2 ? - 1  :  0 );
        };
        this.data.sort(direction, fn);
        if(this.snapshot && this.snapshot != this.data){
            this.snapshot.sort(direction, fn);
        }
    }

, и вот этот конкретный грид будет сортироваться по другому
в примере я привёл настоящую реализацию это функции, но можно и свою поставить, всего лишь поменяв
Код: plaintext
1.
2.
3.
var fn = function(r1, r2){
            var v1 = st(r1.data[f]), v2 = st(r2.data[f]);
            return v1 > v2 ?  1  : (v1 < v2 ? - 1  :  0 );
        }; 
на что-то более вразумительное. Так что возможности сортировки практически безграничны.
...
Рейтинг: 0 / 0
Сортировка в гриде extjs
    #35292907
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но, это - не решение проблемы топегстартера, однако.
...
Рейтинг: 0 / 0
Сортировка в гриде extjs
    #35293110
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тьфу ты. Это ж ты Грасов у ответил. Он уже из-за своей ориентации (и лексики) дофига ников сменил. И с текущим ником у него всего один лишь пост у нас на форуме. И ты Зевс туда же...
...
Рейтинг: 0 / 0
Сортировка в гриде extjs
    #35295483
Фотография Грасов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZeusTheTrueGodну насчёт подсунуть своё никак - это неправда, я там весьма много своего подсовываю, не меняя исходный текст библиотеки
я же не сказал, что надо менять именно исходный код extjs.
я сказал, что не меняя классов - не сделаешь. ты как раз
изменил. так что все правы все свободны.
...
Рейтинг: 0 / 0
Сортировка в гриде extjs
    #35295484
Фотография Грасов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeТьфу тыбедняшка.. у тебя аллергия на меня штоли?

телфаст купи и применяй строго по инструкции.
...
Рейтинг: 0 / 0
Сортировка в гриде extjs
    #35295509
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Грасов...у тебя аллергия на меня штоли...
Нет, просто на шее какие-то пятна выскочили.
Я вот о чём: Давайте таки не ругаться матом на форуме. И не говорить гадости людям, которые токо начинают юзать яваскрипт.
...
Рейтинг: 0 / 0
Сортировка в гриде extjs
    #35295558
Фотография Грасов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeгадостипоясни-ко
...
Рейтинг: 0 / 0
Сортировка в гриде extjs
    #35295575
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Грасовпоясни-ко
Извини, это я про Зевса.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Сортировка в гриде extjs
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]