2013-12-10 3 views
1

Использование jqGrid 4.5.2. В моем наборе данных у меня есть столбец, который может содержать целые числа или текст. У меня есть sorttype, установленный на text.jqGrid - сортировка чисел и текст

Данные, которые возвращаются, будут перемешаны в сетке и могут содержать оба символа или цифры. Он может содержать только буквы, только цифры или их смесь. Если я нажимаю на колонке для сортировки в порядке убывания, он идет:

400 
350 
300 
200 
1100 
1020 
1010 
1000 
100 

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

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

EDIT

основе @ ответ Олега, я попробовал несколько различных путей реализации sorttype в виде функции. Однако я не могу заставить его стрелять. Он будет сортировать данные, но, похоже, сортирует все как строку. У меня есть несколько операторов console.log в коде, которые должны выгружать любые значения, но не отображаются.

Первая попытка состояла в том, чтобы иметь функцию внутри colModel.

{name:"MySource", 
index:"MySource", 
width:40, 
align:"left", 
sorttype: function (cell, rowObject) { 
    if (typeof cell === "string" && /^test(\d) + $/i.test(cell)) { 
     console.log("inside if custom sort - cell = " + cell); 
     return parseInt(cell); 
     } 
    else { 
     console.log("else - cell = " + cell); 
     return cell; 
     } 
    }, 

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

Вот colModel:

{name:"MySource", 
index:"MySource", 
width:40, 
align:"left", 
sorttype: function (cell) { 
     return myCustSort (cell) ; 
     } 
    } 
} 

и myCustSort функция:

function myCustSort (myCell) { 
    if (typeof myCell === "string" && /^test(\d) + $/i.test(myCell)) { 
     console.log("inside if custom sort - cell = " + myCell); 
     return parseInt(myCell); 
     } 
    else { 
     console.log("else - cell = " + myCell); 
     return myCell; 
     } 
} // end myCustSort 

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

Спасибо!

ответ

2

Вы можете использовать sorttype определенную функцию. Внутри функции вы можете использовать parseInt для проверки того, является ли значение целым или нет. В случае целочисленного значения функция может возвращать целочисленное значение. В случае нецелого функции функция может возвращать исходное строковое значение. См. the answer для примера кода.

+0

@ oleg..can пожалуйста дайте sugesstion на this..when у вас есть time..i очень беспокоюсь о моей подход к mvc. http://stackoverflow.com/questions/20514446/how-to-call-model-methods-in-controller-in-asp-net-mvc –

+0

@oleg - Я посмотрел на ваш пример, но у меня возникают проблемы с попыткой сделать он работает.Я не думаю, что он запускает функцию sorttype. Я отредактировал вопрос, чтобы показать, что я пытался. –

+0

@steve_o: Вы не разместили код JavaScript, который создает сетку. Некоторые части кода могут быть очень важными. Вы писали: «Я не могу заставить его стрелять». Важно понимать, что 'sorttype' будет использоваться, только если вы используете ** сортировку на стороне клиента **. Если функция 'sorttype' вообще не называется, это означает, что вы, вероятно, используете' datatype: "json" или 'datatype:" json "', и вы не устанавливаете 'loadonce: true'. В случае, когда jqGrid просто отправляет имя сортировочного столбца и направление сортировки на сервер, и сервер отвечает за сортировку. Таким образом, вы должны выполнить сортировку кода сервера. – Oleg

5

вы можете просто установить sorttype в colModel в

sorttype: 'number' 
+0

простой и совершенный ... работающий как шарм – sohaiby

Смежные вопросы