Suppose I have the following data:
Name Month Expense
---------- -------------- ----------
XYZ February 10
XYZ March 50
KLM March 20
ABC April 30
Following the solution in this SO question I have been able to create a JQGrid instance that has the "Expense" value represented in columns instead of rows. For example:
Name Expense February Expense March Expense April
--------- ----------------- --------------- --------------
XYZ 30,00 50,00 0,00
KLM 0,00 20,00 0,00
ABC 0,00 0,00 30,00
In the colModel
that I am dynamically building I am using the same index
value for every
dynamically added column so every search will be redirected automatically to the Expense
field.
This works like a charme :)
Unfortunately in the search dialog the users does not see a single column to filter on the Expense field but he has the opportunity to filter for the columns called respectively Expense February
, Expense March
and Expense April
which is a little bit confusing because he thinks that is going to filter not only for the Expense
property but also for the Month
property.
Is there any way to instruct the jqGrid plugin to hide those unwanted labels and using only a generic field called Expense
?
Thanks a lot for helping!
EDIT:
This is the generated object coming back from the first call (it contains colNames and colModel)
{
"ColNames":[
"Name", "Expense February", "Expense March", "Expense April"
],
"ColModel":[
{ "name":"Name", "index":"Name", ... },
{ "name":"Expense1", "index":"Expense", ... },
{ "name":"Expense2", "index":"Expense", ... },
{ "name":"Expense3", "index":"Expense", ... }
]
}
Also this is the code that create the grid
$.ajax({
url: 'http://server/GetColumns',
type: "post",
dataType: "json",
data: JSON.stringify({ }),
contentType: "application/json; charset=utf-8",
async: false,
success: function (result) {
if (result) {
var colM = result.ColModel;
var colN = result.ColNames;
grid.jqGrid('GridUnload');
grid.jqGrid({
url: 'http://server/GetData',
datatype: 'json',
mtype: 'post',
colModel: colM,
colNames: colN,
[other params here]
})
}
},
error: function (xhr, ajaxOptions, thrownError) {
[...]
},
complete: function () {
[...]
}
});