Similar to Microsoft Excel, rows can be frozen in ParamQuery Grid by setting the option freezeRows to a desired number.
The frozen rows can be excluded while sorting with help of events.
x1
2<div id="grid_freeze_rows" style="margin:auto;"></div>
3
831
2$(function () {
3var data = [
4{ rank: 1, company: 'Exxon Mobil', revenues: 339938.0, profits: 36130.0 },
5{ rank: 2, company: 'Wal-Mart Stores', revenues: 315654.0, profits: 11231.0 },
6{ rank: 3, company: 'Royal Dutch Shell', revenues: 306731.0, profits: 25311.0 },
7{ rank: 4, company: 'BP', revenues: 267600.0, profits: 22341.0 },
8{ rank: 5, company: 'General Motors', revenues: 192604.0, profits: -10567.0 },
9{ rank: 6, company: 'Chevron', revenues: 189481.0, profits: 14099.0 },
10{ rank: 7, company: 'DaimlerChrysler', revenues: 186106.3, profits: 3536.3 },
11{ rank: 8, company: 'Toyota Motor', revenues: 185805.0, profits: 12119.6 },
12{ rank: 9, company: 'Ford Motor', revenues: 177210.0, profits: 2024.0 },
13{ rank: 10, company: 'ConocoPhillips', revenues: 166683.0, profits: 13529.0 },
14{ rank: 11, company: 'General Electric', revenues: 157153.0, profits: 16353.0 },
15{ rank: 12, company: 'Total', revenues: 152360.7, profits: 15250.0 },
16{ rank: 13, company: 'ING Group', revenues: 138235.3, profits: 8958.9 },
17{ rank: 14, company: 'Citigroup', revenues: 131045.0, profits: 24589.0 },
18{ rank: 15, company: 'AXA', revenues: 129839.2, profits: 5186.5 },
19{ rank: 16, company: 'Allianz', revenues: 121406.0, profits: 5442.4 },
20{ rank: 17, company: 'Volkswagen', revenues: 118376.6, profits: 1391.7 },
21{ rank: 18, company: 'Fortis', revenues: 112351.4, profits: 4896.3 },
22{ rank: 19, company: 'Crédit Agricole', revenues: 110764.6, profits: 7434.3 },
23{ rank: 20, company: 'American Intl. Group', revenues: 108905.0, profits: 10477.0 }
24];
25var frozenRows = [];
26
27var obj = {
28scrollModel: { autoFit: true },
29showTitle: false,
30resizable: true,
31freezeRows: 2,
32//showHeader: false,
33height: 400,
34beforeSort: function (evt, ui) {
35if ($("#sort_all_chk").prop("checked")) {
36var freezeRows = this.option("freezeRows"),
37dataGrid = this.option("dataModel.data");
38
39frozenRows = dataGrid.splice(0, freezeRows);
40}
41},
42sort: function (evt, ui) {
43if ($("#sort_all_chk").prop("checked")) {
44var dataGrid = this.option("dataModel.data");
45
46Array.prototype.unshift.apply(dataGrid, frozenRows);
47}
48},
49colModel: [
50{ title: "Rank", width: 100, dataType: "integer", dataIndx: "rank" },
51{ title: "Company", width: 200, dataType: "string", dataIndx: "company" },
52{ title: "Revenues", width: 150, dataType: "float", dataIndx: "revenues", format: '#.0' },
53{ title: "Profits", width: 150, dataType: "float", dataIndx: "profits", format: '#.0' }
54],
55dataModel: { data: data },
56create: function () {
57this.widget().find(".frozen").val(this.option('freezeRows'));
58},
59toolbar: {
60items: [
61{
62type: 'select',
63label: 'Select number of frozen rows: ',
64cls: 'frozen',
65options: [0, 1, 2, 3, 4, 5, 6, 7, 8],
66listener: function (evt) {
67this.option("freezeRows", $(evt.target).val());
68this.refresh();
69}
70},
71{ type: 'separator' },
72{
73type: 'checkbox',
74attr: 'id="sort_all_chk"',
75label: 'Exclude frozen rows while sorting'
76}
77]
78}
79};
80$("#grid_freeze_rows").pqGrid(obj);
81
82});
83