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

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

P.S. хотя есть тут у нас один ярый фанат библиотек, может он хитрый метод в ExtJS знает. Ждем с нетерпением.
...
Рейтинг: 0 / 0
29.04.2008, 13:30
    #35285714
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в гриде extjs
Сортировать по чему-то типа:
Код: plaintext
cat<span style="display:none"> 0000101 </span> 101 
...
Рейтинг: 0 / 0
29.04.2008, 17:07
    #35286664
ZeusTheTrueGod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в гриде extjs
вариант 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
29.04.2008, 20:17
    #35287075
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в гриде extjs
Зевс! Твоё - не работает, а моё - таки да.
...
Рейтинг: 0 / 0
02.05.2008, 09:16
    #35290295
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в гриде extjs
А вот работающий примерчик - скопипастить и запустить в браузере:
Код: 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
02.05.2008, 21:16
    #35290793
ZeusTheTrueGod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в гриде extjs
ну круто конечно, только смешиваются данные и представления
хотя в джаваскрипте главное - чтоб работало
...
Рейтинг: 0 / 0
03.05.2008, 09:16
    #35290918
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в гриде extjs
ZeusTheTrueGod...смешиваются данные и представления...
Это как раз и есть вариант представления данных. Причём, вышеуказанная метода ничего общего с конкретной библиотекой не имеет, она - универсальна. Этот же приёмчик я с успехом использую в т.ч. и в стандартном гридвью в аспнет. Например, сотрировка по дате:
Код: plaintext
1.
<span style='display:none'>ГГГГММДД</span>ДД.ММ.ГГГГ
...
Рейтинг: 0 / 0
03.05.2008, 18:58
    #35291173
ZeusTheTrueGod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в гриде extjs
я сразу не заметил и не разобрался, в чём смысл этого спана, думал, что для выделения цветом
дейстивтельно, хороший хак, будет возможность , начну им пользоваться, идея просто замечательная
...
Рейтинг: 0 / 0
03.05.2008, 19:13
    #35291185
Грасов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в гриде extjs
ZeusTheTrueGodя сразу не заметил и не разобрался, в чём смысл этого спана, думал, что для выделения цветом
дейстивтельно, хороший хак, будет возможность , начну им пользоваться, идея просто замечательнаяпросто счас в extjs сортировка захардкодена
и "подсунуть" свою функцию сортировки без изменения базовых
классов - никак. и такой вот хак как раз самый оптимальный.
тока что еще лучше сократить скрываемый текст

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

до

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


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

можно писать

Код: 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
04.05.2008, 19:11
    #35292907
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в гриде extjs
Но, это - не решение проблемы топегстартера, однако.
...
Рейтинг: 0 / 0
04.05.2008, 22:51
    #35293110
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в гриде extjs
Тьфу ты. Это ж ты Грасов у ответил. Он уже из-за своей ориентации (и лексики) дофига ников сменил. И с текущим ником у него всего один лишь пост у нас на форуме. И ты Зевс туда же...
...
Рейтинг: 0 / 0
05.05.2008, 20:13
    #35295483
Грасов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в гриде extjs
ZeusTheTrueGodну насчёт подсунуть своё никак - это неправда, я там весьма много своего подсовываю, не меняя исходный текст библиотеки
я же не сказал, что надо менять именно исходный код extjs.
я сказал, что не меняя классов - не сделаешь. ты как раз
изменил. так что все правы все свободны.
...
Рейтинг: 0 / 0
05.05.2008, 20:14
    #35295484
Грасов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в гриде extjs
ShSergeТьфу тыбедняшка.. у тебя аллергия на меня штоли?

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


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